Wynik na podstawie trzech danych - Makro

Wynik na podstawie trzech danych - Makro

Wątek przeniesiony 2024-06-25 14:40 z Inne języki programowania przez cerrato.

AI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam, jestem nowy, od jakiegoś czasu zacząłem się uczyć VBA i niestety nie wszystko jeszcze dobrze "ogarniam". Chciałbym prosić o pomoc w postaci wskazówki jak należy wykonać następujące makro. Mianowicie chciałbym uzyskać odpowiedź po wybraniu w polach danych czy dane wartości znajdują się w tabeli i jeśli tak to w którym wierszu i ile jest takich rekordów. Pierwszym pomysłem było wyszukiwanie pionowo poprzez makro, ale musiałbym dołączyć kolejną kolumnę w excelu - "zbitkę" poprzednich kolumn, więc to trochę bezsensowne, ale działa. Chciałbym jednak dowiedzieć się jak można to wykonać inaczej, szybciej i lepiej za pomocą VBA, bo na pewno można.

Załączam plik z tym. Z góry dziękuję za pomoc.

DB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

Można tak, wrzucasz do swojego arkusza pod Private Sub CommandButton1_Click()

Kopiuj
'usun filtr
ActiveSheet.AutoFilterMode = False

'zabezpieczenie na brak parametrow filtrowania
With UserForm1
    If Len(.ComboBox1.Text) = 0 Or (.ListBox1.ListIndex) = -1 Or Len(.TextBox1.Text) = 0 Then
        MsgBox "wprowadź parametry"
        Exit Sub
    End If
End With

'wlacz filtr
With ActiveSheet.Range("A1:D1")
    .AutoFilter Field:=2, Criteria1:=UserForm1.ComboBox1.Text
    .AutoFilter Field:=3, Criteria1:=UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex)
    .AutoFilter Field:=4, Criteria1:=UserForm1.TextBox1.Text
End With
AI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Dziękuję! Właśnie o coś takiego mi chodziło! Choć przyznam szczerze, że nie rozumiem dlaczego w Listboxie trzeba takie coś zrobić, aby zadziałało

Kopiuj
UserForm1.ListBox1.List(UserForm1.ListBox1.ListIndex)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.