Spis treści
Możesz wykorzystać wbudowane w arkusz Excel funkcje, takie jak np. Funkcja VLOOKUP , Funkcja CHOOSE i Funkcja PMT w swoim kodzie VBA i aplikacjach. W rzeczywistości większość Excel funkcje arkusza mogą być dostępne i używane w VBA kod . Like use Funkcje arkusza INDEX & MATCH w kodzie VBA programu Excel.
Dlaczego chciałbyś używać Excel Arkusz roboczy funkcje w twoim VBA kod Nie musisz również wymyślać własnych funkcji, chyba że naprawdę musisz, jeśli funkcjonalność już istnieje. Wszystko, co w zasadzie musisz zrobić, to uzyskać dostęp do funkcji, której potrzebujesz, ponieważ już tam jest i nie ma potrzeby ponownego wymyślania koła.
Zacznijmy więc od przykładu pokazującego, jak używać INDEX MATCH z wykorzystaniem programu Excel VBA.
Będziemy wykorzystywać INDEX oraz MATCH Funkcje w Excel VBA kod Za pomocą formularza użytkownik wybiera imię ucznia, a następnie pobierana jest i zwracana odpowiednia płeć ucznia oraz kolor oczu.
Pobierz Zeszyt ćwiczeń
Proszę pobrać zeszyt ćwiczeń do samodzielnego przećwiczenia.
INDEX-MATCH.xlsx9 prostych kroków jak używać INDEX i MATCH w kodzie VBA
Na stronie INDEX oraz MATCH Funkcje są często używane w połączeniu w formułach, w celu wykonania zaawansowanych wyszukiwań. Obie w połączeniu oferują pewne korzyści w stosunku do VLOOKUP .
Omówiliśmy już szczegółowo, jak używać INDEX oraz MATCH aby wykonać zaawansowane wyszukiwanie w Excel podręcznik jako prosta formuła arkusza, w poprzedni tutorial Zobaczymy teraz, jak używać INDEX oraz MATCH Funkcje razem w VBA kod w celu nadania funkcjonalności podobnej do tej, jaką ma look up UserForm będziemy tworzyć.
Krok1: Zastosowanie funkcji INDEX i MATCH w zbiorze danych
- Zaczynamy od dwóch arkuszy w naszym skoroszycie z obsługą makr. Jeden to pusty arkusz o nazwie UserForm , drugi to arkusz o nazwie StudentInformacje , który zawiera zakres pokazujący imiona uczniów, ich płeć i kolor oczu jak pokazano poniżej.
Przypomnijmy sobie szybko, że gdybyśmy chcieli użyć INDEX oraz MATCH Funkcje w jednej formule, w rzeczywistym arkuszu, aby podać nam płeć nazwiska ucznia, którego chcemy wyszukać. Użylibyśmy następującej formuły:
=INDEX(B2:B31, MATCH("Diana Graham", A2:A31, 0))
- Po naciśnięciu CTRL-ENTER , otrzymujemy wartość Females zwróconą, jako płeć jak pokazano poniżej.
Krok 2: Zmień nazwę kolumny B na StudentNames
- Nadamy teraz nazwę zakresowi A2: A31 , StudentNames jak pokazano poniżej.
- Ukryj StudentInformacje arkusza, klikając prawym przyciskiem myszy i wybierając Schowaj się. Dobrym pomysłem jest powierzchowne ukrycie arkuszy zaplecza, które zawierają informacje, których nie chcesz, aby użytkownik edytował lub widział.
Krok 3: Otwórz okno Visual Basic
- Teraz z aktywnym arkuszem UserForm przechodzimy do Developer> Code> Visual Basic w celu otwarcia Edytor Visual Basic (VBE) .
- Raz w Interfejs VBE , przechodzimy do Insert, UserForm jak na rysunku poniżej.
Krok 4: Zmień właściwości i dodaj pola tekstowe
- Używanie Właściwości Okno , zmienimy nazwę naszego formularza na StudentLookup zmienić Caption na Lookup Student Information, zmienić BackColor na jasnoniebieski, a wysokość ustaw na 300 px, a szerokość do 350 px. Jeśli okno właściwości nie jest wyświetlane, naciśnij przycisk F4 na klawiaturze, aby go zobaczyć.
- Teraz wstawimy etykietę używając Skrzynka narzędziowa (jeśli nie widzisz Toolbox, z jakiegoś powodu przejdź do View, Skrzynka narzędziowa ), zmienimy Caption na Choose a student i zmienimy BackColor w tym przypadku na biały. Ustawimy czcionkę na Georgia , styl czcionki do pogrubiona , rozmiar czcionki do 12 , oraz centrum Wyrównanie tekstu. Zastosowany zostanie efekt specjalny 1- fmSpecialEffectRaised jak pokazano poniżej.
- Teraz wstawimy pole kombi poniżej etykiety. Nazwij to pole kombi cmdStudentName i dla RowSource , typ StudentNames.
- Aby zobaczyć efekt ustawienia RowSource pola kombi, Kliknij Bieg Sub/UserForm przycisk .
- Teraz z powodu ustawienia RowSource do nazwanego zakresu, gdy użytkownik kliknie strzałkę rozwijaną na formularzu UserForm, pole kombi pokazuje nazwiska studentów z nazwanego zakresu, automatycznie, jak pokazano poniżej.
- Zamknij formularz UserForm klikając na przycisk zamknij.Naciśnij Alt-F11 aby wrócić do VBE .
- Po powrocie do VBE Dodajemy kolejną etykietę do formularza UserForm (pod polem kombi) i zmieniamy opcję Caption do Płeć i zmienimy BackColor w tym przypadku na biały. Ustawimy czcionkę na Georgia , styl czcionki do pogrubiona , rozmiar czcionki do 12 , oraz centrum Wyrównanie tekstu. Zastosowany zostanie efekt specjalny 1- fmSpecialEffectRaised jak pokazano poniżej.
- Utwórz pole tekstowe pod Płeć etykieta i nadać mu nazwę txtGender .
- Dodaj inna etykieta o nazwie Oko Kolor oraz pole tekstowe o nazwie txtEyeColour jak pokazano poniżej. Użyj te same właściwości dla etykiety, co dla dwóch innych etykiet dodanych wcześniej do formularza, aby zapewnić, że UserForm ma spójny wygląd.
- Teraz Wybierz wszystkie elementy sterujące, dodane do UserForm ...jak dotąd za pomocą klawisza Control.
- Centrum poziomo, jak pokazano poniżej.
Read More: Jak używać formuły INDEX MATCH w Excelu (9 przykładów)
Podobne lektury
- Excel INDEX MATCH Jeśli komórka zawiera tekst
- Jak używać formuły INDEX-MATCH w Excelu do generowania wielu wyników
- Indeks dopasowania sumy wielu wierszy w Excelu (3 sposoby)
- Learn Excel VBA Programming & Macros (Free Tutorial - Krok po kroku)
- 22 Przykłady makr w Excelu VBA
Krok 5: Dodaj przycisk z Przybornika
- Następny, Dodaj przycisk do formularza za pomocą Skrzynka narzędziowa . Zmiana the Nazwa przycisku, aby cmdLookUp , BackColor do jasnopomarańczowego, trzymaj Tahoma czcionka i zmiana styl do pogrubiona , na koniec zmień Caption przycisku, aby Spójrz w górę Student Szczegóły jak pokazano poniżej.
Krok 6: Wstaw kod VBA
- Kliknij prawym przyciskiem myszy na stronie , nowo dodany przycisk, oraz wybierz Zobacz Kod .
- Wprowadź następujący kod dla zdarzenia kliknięcia przycisku:
Dim a As Variant Dim b As Variant Dim c As Variant a = cmdStudentName.Value Sheets("StudentInformation").Activate If a = "" Then b = "" Let txtGender.Text = b c = "" Let txtEyeColour.Text = c Else b = Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("B2:B31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) c =Application.WorksheetFunction.Index(Sheets("StudentInformation").Range("C2:C31"), Application.WorksheetFunction.Match(a, Sheets("StudentInformation").Range("A2:A31"), 0)) Let txtEyeColour.Text = c End If
Zaczynamy od deklaracji trzy zmienne i przypisanie wariantowego typu danych do tych zadeklarowanych wariantowych typów danych. Wariantowy typ danych jest dobrym typem danych na początek. Ponieważ podczas pracy z arkusz roboczy funkcje , możesz nie zawsze być pewien wyjść. Dlatego użyj wariantowego typu danych, gdy zaczynasz.
Później warto użyć jednego z innych, bardziej specyficznych typów danych, np. liczba całkowita lub sznurek. W przypadku bardziej zaawansowanego dłuższego kodu typ danych variant nie wykorzystuje pamięci tak efektywnie jak pozostałe typy danych.
Zmienna a pobiera wartość z opcji, którą użytkownik wybiera w rozwijanym polu kombi na UserForm Jeśli nie ma wyboru, to wszystkie pozostałe pola tekstowe są pusty .
Jeśli wybierzesz nazwisko ucznia z listy combo skrzynka na UserForm, wtedy zmienna b pobiera wartość za pomocą INDEX Arkusz roboczy Funkcja w połączeniu z MATCH Funkcja w VBA kod, jak pokazano.
Wyszukuje on wartość, używając w zasadzie tej samej składni, co funkcja arkusza. Podczas używania funkcji arkusza w VBA , VBA IntelliSense w tym konkretnym przypadku nie jest zbyt intuicyjny Dlatego zalecana jest znajomość składni pochodzącej z arkusza kalkulacyjnego. Zmienna c wyciąga wartość za pomocą INDEX Arkusz roboczy Funkcja w połączeniu z MATCH Funkcja w VBA kod, gdy użytkownik wybierze opcję z pola kombi.
Zmienna b uzyskuje wartość z gender kolumna w arkuszu, natomiast zmienna c pobiera wartość z kolumny Kolor oczu w arkuszu.
Pole tekstowe "płeć" jest wypełnione b a pole tekstowe Kolor oczu zostanie wypełnione wartością c 'wartość.
Read More: Zdarzenia VBA w Excelu (kompletny poradnik)
Krok 7: Wstaw przycisk poleceń
- Teraz przejdź do arkusza o nazwie UserForm w swoim zeszycie. Format go, jak pokazano poniżej, oraz wstawić obraz dostarczony przez ExcelWIKI .
- Idź do Developer> Controls> Insert> ActiveX Controls.
- Wkładka przycisk jak na rysunku.
- Przy wybranym przycisku, udać się do Developer> Controls> Właściwości .
- Zmiana the Nazwa przycisku, aby cmdShowForm i Caption do Lookup Informacje dla studentów .
Krok 8: Wyświetlenie kodu wyszukiwania
- Kliknij prawym przyciskiem myszy na stronie przycisk i wybierz Wyświetl kod jak pokazano poniżej.
- Wpisz następujący kod:
Private Sub cmdShowForm_Click() StudentLookup.Show End Sub
Krok 9: Wystawienie wyniku końcowego
- Wróć do arkusz roboczy. Upewnij się, że niezaznaczone Projekt Tryb .
- Kliknij przycisk w celu wyświetlenia formularza.
- Wybierz imię i nazwisko ucznia przy użyciu kombi Kod automatycznie zwróci płeć ucznia i kolor oczu.
Pamiętaj, aby uratować swój skoroszyt jako skoroszyt z obsługą makr jeśli jeszcze tego nie zrobiłeś i masz, używamy INDEX & MATCH Funkcje arkusza w Excelu kod VBA w celu utworzenia formularza lookup.
Read More: Excel INDEX-MATCH Formuła, aby zwrócić wiele wartości poziomo
Wniosek
Excel posiada wiele przydatnych funkcje arkusza który może być wykorzystany w VBA , jak jak, używając Funkcje arkusza INDEX & MATCH w kodzie VBA programu Excel. Te funkcje pozwolą Ci rozszerzyć VBA kod. Jeśli już wiesz jak działają w standardzie Excel wtedy krzywa uczenia się nie jest tak wielka poprzez dostosowanie wiedzy dla VBA . Dostęp do funkcji arkusza, w swoim VBA kod może być prawdziwą oszczędnością czasu, ponieważ nie trzeba tworzyć własnych funkcji dla funkcjonalności, która już istnieje.
Zapraszamy do komentowania i mówienia, czy używasz funkcji arkusza kalkulacyjnego w swoim kodzie VBA i aplikacjach.
Sekcja przeglądowa: Sprawdź swoje zrozumienie
1) Ustaw w kolumnie A prostą listę trzech pozycji, a mianowicie mandarynek, marchewek i pomarańczy, następnie w komórce obok każdej pozycji w kolumnie B napisz, czy pozycje z kolumny A są owocami czy warzywami, po zakończeniu ustawiania przykładowych danych użyj INDEX & MATCH funkcja łączenia w celu dostarczenia informacji, czy marchew jest owocem czy warzywem.
2) Użyj tego zestawu danych z ESPN na temat głównych trenerów NFL i odpowiednich drużyn, których są trenerami. Utwórz formularz użytkownika, który pozwala użytkownikowi wprowadzić nazwisko określonego trenera w polu tekstowym, a następnie mieć drużynę, której jest trenerem, dostarczoną w innym polu tekstowym, gdy użytkownik kliknie wyślij. Użyj INDEX & MATCH kombinacji funkcji arkusza w Twoim kodzie VBA.