Kategorie szkoleń | Egzaminy | Kontakt
  • 4
  • 5
  • 1.5K

Jak można by zrobić następującą „sztuczkę”? Mając dane w Excelu, wskazujemy interesującą nas komórkę (pojedynczym lub podwójnym kliknięciem) i zostajemy przeniesieni do innej zakładki z jednoczesnym założeniem filtra o wartości klikniętej komórki np.:

1. Mamy zakładkę „Zamawiający”, a w niej wykaz osób (unikalny identyfikator, imię, nazwisko).

2. Klikamy (pojedynczym lub podwójnym kliknięciem) w identyfikator osoby.

3. Zostajemy przeniesieni do zakładki np. „Towar” i automatycznie jest zakładany filtr na kolumnę z identyfikatorem zamawiającego.

4. Widzimy wykaz zamówionego przez daną osobę towaru.

Szymon_Siemiaszko
  • Zapytał
  • @ Szymon_Siemiaszko | 26.03.2014
    • lider
    • laureat
    • 18
    • 7
    • 30

Odpowiedzi (4)

  • 15

Poczytałem, pogrzebałem w weekend i zrobiłem.

W załączniku plik z makrem na dwuklik w komórkę (spakowany .xlsm bo nie chciało dołączyć normalnie oraz to samo w .xls), może się komuś przyda ta idea, a działa to tak:

1. Mamy zakładkę "zamawiający" z danymi osoby (unikalny identyfikator, imię, nazwisko) oraz kolumnę INFO z wpisem dla każdej osoby "sprawdz_zamowienia".

2. Klikając dwuklikiem w odpowiedni wiersz kolumny INFO, makro sprawdza, czy w tej komórce jest wpis "sprawdz_zamowienia":

- jeżeli tak - pobiera do zmiennej ID zamawiającego (z wiersza w który kliknęliśmy),

- jeżeli nie - nic nie robi (wchodzi normalnie w edycję komórki).

3. Po pobraniu ID zamawiającego - aktywuje zakładkę "towar" i ustawia filtr na wartość pobranej zmiennej (czyli ID zamawiającego).

4. Widzimy wykaz towaru zamówionego przez daną osobę.

Koniec.

PS. A makro wygląda tak (makro dla arkusza):

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim txt As String

  If Target.Value = "sprawdz_zamowienia" Then
    x = Target.Row
    txt = Cells(Target.Row, 1)

    Worksheets("towar").Activate
    Worksheets("towar").Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:=txt
       
  End If
 
End Sub



Załączniki

  • rar

    dwuklik_w_komorke.rar ( 13K )
  • xls

    dwuklik_w_komorke.xls ( 36K )
Szymon_Siemiaszko
  • Odpowiedział
  • @ Szymon_Siemiaszko | 31.03.2014
    • lider
    • laureat
    • 18
    • 7
    • 30
Komentarze
Dokładnie, bardzo dobry przykład wykorzystania zdarzenia.
Skomentował : @ TRENER ALTKOM AKADEMII ,07.05.2014
  • 3

A dziękuję Panie Piotrze. :)

Szymon_Siemiaszko
  • Odpowiedział
  • @ Szymon_Siemiaszko | 04.04.2014
    • lider
    • laureat
    • 18
    • 7
    • 30
  • 0

Dzień dobry!

Spodobał mi się ten przykład wykorzystania zdarzenia. Zastosowałem go po małej przeróbce w swojej aplikacji. U mnie wartość „Target” nie jest stała i nadawane jest przez aktywowaną „dwukliknięciem” komórkę. Kod rozpoczyna się tak:

„If Target.Value = ActiveCell Then …..”

Ale nie bardzo potrafię zawęzić pola działania tego zdarzenia tylko do jednej kolumny, właściwie – to do zakresu o nazwie „GRUPA”, który znajduje się w kolumnie „E” w moim pliku (.xlsm).

Chciałbym, aby zdarzenie było aktywowane tylko wtedy, gdy kliknę na komórkę, która znajduje się we wspomnianym zakresie.

Może ktoś podpowie?

Pozdrawiam.

Tadeusz_Kasprzak
  • Odpowiedział
  • @ Tadeusz_Kasprzak | 16.03.2016
    • 9
    • 4
    • 11
  • 4

Dobry wieczór Panie Tadeuszu.

Warunek, który Pan sprawdza jest zawsze spełniony, ponieważ Target to właśnie kliknięta komórka, a ActiveCell to komórka aktywna, która jest kliknięta.

Proszę spróbować skorzystać ze sprawdzenia warunku:

if Not Intersect(Target,Range("GRUPA")) Is Nothing Then ...

Czyli sprawdzenie, czy jest jakaś część wspólna zakresu "RANGE" oraz tej klikniętej komórki.

Pozdrawiam.
Marek Krawczyk.

  • Odpowiedział
  • @ | 18.03.2016
  • TRENER ALTKOM AKADEMII
Komentarze
Serdecznie dziękuję Panie Marku! Nie mogę się doczekać wypróbowania tegoż. Pozdrawiam!
Skomentował : @ Tadeusz_Kasprzak ,19.03.2016
  • 9
  • 4
  • 11