Innehållsförteckning
Du kan använda de inbyggda funktionerna i Excel-arbetsbladet, t.ex. VLOOKUP-funktion , den CHOOSE Funktion och PMT-funktion även i din VBA-kod och dina program. Faktum är att de flesta av de Excel arbetsbladets funktioner kan nås och användas i VBA kod . Använd gärna INDEX & MATCH Arbetsbladfunktioner i Excel VBA-kod.
Varför skulle du vilja använda Excel Arbetsblad funktioner i din VBA kod ? för att utöka funktionaliteten i den kod du använder. Du behöver inte heller hitta på egna funktioner, om du inte verkligen behöver det, om funktionaliteten redan finns där. Allt du behöver göra är att komma åt den funktion du behöver eftersom den redan finns där och du behöver inte uppfinna hjulet på nytt.
Låt oss börja med ett exempel som visar hur man använder INDEX MATCH med Excel VBA.
Vi kommer att använda oss av INDEX och MATCH Funktioner på Excel VBA kod Med hjälp av formuläret väljer användaren ett namn på eleven, och sedan hämtas och returneras motsvarande kön och ögonfärg för eleven.
Ladda ner övningsboken
Ladda ner övningsboken för att öva dig själv.
INDEX-MATCH.xlsx9 enkla steg för att använda INDEX och MATCH i VBA-kod
INDEX och MATCH Funktioner används ofta i kombination i formler för att utföra avancerade sökningar. Dessa två funktioner i kombination ger vissa fördelar jämfört med VLOOKUP .
Vi har redan i detalj beskrivit hur du använder INDEX och MATCH för att utföra avancerade sökningar i en Excel arbetsbok som en direkt arbetsbladsformel, i en tidigare handledning Vi ska nu se hur man använder INDEX och MATCH Funktioner tillsammans i VBA kod , för att ge liknande funktionalitet som uppslagsfunktionen. UserForm som vi kommer att skapa.
Steg 1: Tillämpa INDEX- och MATCH-funktionerna i datamängden
- Vi börjar med två ark i vår arbetsbok med makroaktivering. Det ena är ett tomt ark som heter UserForm , den andra är ett blad som kallas Studentinformation , som innehåller en rad som visar Elevernas namn, deras kön och ögonfärg. som visas nedan.
Låt oss påminna oss själva om att om vi vill använda INDEX och MATCH Funktioner i en formel, i det aktuella arbetsbladet för att ge oss könet på namnet på den elev vi vill söka upp. Vi skulle använda följande formel:
=INDEX(B2:B31, MATCH("Diana Graham", A2:A31, 0))
- När du trycker på CTRL-ENTER , får vi värdet Females som returneras, som kön enligt nedan.
Steg 2: Ändra namnet på kolumnen B till StudentNames
- Vi kommer nu att namnge intervallet A2: A31 , StudentNames som visas nedan.
- Dölj den Studentinformation genom att högerklicka och välja Göm dig. Det är en bra idé att ytligt dölja de arbetsblad som innehåller information som du inte vill att användaren ska redigera eller se.
Steg 3: Öppna Visual Basic-fönstret
- Nu när UserForm-bladet är aktiverat går vi till Utvecklare> Kod> Visual Basic för att öppna Redaktör för Visual Basic (VBE) .
- När du väl är i VBE-gränssnitt Vi går till Insert, UserForm som visas nedan.
Steg 4: Ändra egenskaper och lägg till textrutor
- Användning av Egenskaper Fönster Vi byter namn på formuläret till StudentLookup , ändra rubriken till Lookup Student Information, ändra rubriken BackColor till ljusblå, och ställ in höjden till 300 px och bredden till 350 px. Om fönstret Egenskaper inte visas trycker du på knappen F4 tangenten på tangentbordet för att se den.
- Vi kommer nu att infoga en etikett med hjälp av Verktygslåda (Om du av någon anledning inte kan se verktygslådan, gå till Visa, Verktygslåda ), ändra rubriken till Välj en elev och vi ändrar BackColor till vit i det här fallet. Vi ställer in teckensnittet till Georgien , teckenstilen till fet , teckenstorleken till 12 och center anpassa texten. Den specialeffekt som används kommer att vara den 1- fmSpecialEffectRaised som visas nedan.
- Nu ska vi infoga en kombinationsruta under etiketten. Namnge den här kombinationsrutan cmdStudentName och för RowSource , typ Studentnamn.
- För att se effekten av att ställa in RowSource i kombinationsrutan, Klicka på körning Sub/UserForm knapp .
- På grund av inställningen av RowSource till det namngivna intervallet, så när användaren klickar på rullgardinsväljare på UserForm visas studentnamnen från det namngivna intervallet automatiskt i kombinationsrutan, vilket visas nedan.
- Stäng UserForm genom att klicka på stängningsknappen. Tryck på Alt-F11 för att gå tillbaka till VBE .
- När vi återvänder till VBE , lägg till en annan etikett i UserForm (under kombinationsrutan) och ändra Bildtext till Genus och vi kommer att ändra BackColor till vit i det här fallet. Vi ställer in teckensnittet till Georgien , teckenstilen till fet , teckenstorleken till 12 och center anpassa texten. Den specialeffekt som används kommer att vara den 1- fmSpecialEffectRaised som visas nedan.
- Skapa en textruta under Genus etikett , och namnge den txtGender .
- Lägg till en annan etikett som heter Ögon Färg och en textruta som heter txtEyeColour som visas nedan. Använd samma egenskaper för etiketten som för de två andra etiketter som tidigare lagts till i formuläret, för att säkerställa att UserForm har ett enhetligt utseende.
- Nu Välj alla kontroller, som läggs till i UserForm hittills med hjälp av kontrolltangenten.
- Centrum horisontellt, som visas nedan.
Läs mer: Hur man använder INDEX MATCH-formeln i Excel (9 exempel)
Liknande läsningar
- Excel INDEX MATCH om cellen innehåller text
- Hur man använder INDEX-MATCH-formeln i Excel för att generera flera resultat
- Indexmatchning av summan av flera rader i Excel (3 sätt)
- Lär dig Excel VBA-programmering & Makroer (gratis handledning - steg för steg)
- 22 makroexempel i Excel VBA
Steg 5: Lägg till en knapp från verktygslådan
- Nästa, Lägg till en knapp i formuläret med hjälp av Verktygslåda . Ändra Namn av knappen för att cmdLookUp , den BackColor till ljusorange, behåll den Tahoma typsnitt och ändra stilen till fet , ändra slutligen Bildtext av knappen för att Titta på upp Studerande Detaljer som visas nedan.
Steg 6: Infoga VBA-kod
- Högerklicka på , den nytillkomna knappen, och Välj Visa Kod .
- Skriv in följande kod för knappklickhändelsen:
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
Vi börjar med att deklarera tre variabler och tilldela varianten som datatyp till dessa deklarerade varianter av datatyper. Variantdatatypen är en bra datatyp att börja med. För när man arbetar med arbetsblad funktioner Därför bör du använda den alternativa datatypen när du börjar.
Senare är det lämpligt att använda en av de andra mer specifika datatyperna, t.ex. heltal eller . sträng. För mer avancerad och längre kod använder variantens datatyp inte minnet lika effektivt som de andra datatyperna.
Variabel a drar värdet från det alternativ som användaren väljer i rullgardinsrutan på UserForm Om det inte finns något val, är alla andra textrutor tomt .
Om du väljer ett studentnamn från listan combo box på den UserForm, så drar variabeln b ett värde med hjälp av INDEX Arbetsblad Funktion i kombination med den MATCH Funktion i den VBA kod, som visas.
Den söker upp värdet med i princip samma syntax som arbetsbladets funktion. När du använder arbetsbladets funktioner i VBA , den VBA IntelliSense i det här fallet är inte så stor. intuitiv Därför rekommenderas att du är bekant med syntaxen från arbetsbladskunskapen. Variabel c drar värde genom att använda INDEX Arbetsblad Funktion i kombination med den MATCH Funktion i den VBA kod när användaren väljer ett alternativ i kombinationsrutan.
Variabel b får ett värde genom att kön kolumn i arbetsbladet, medan variabel c hämtar värdet från kolumnen Ögonfärg i arbetsbladet.
Textrutan för kön fylls med b och textrutan för ögonfärg fylls med c värde.
Läs mer: Excel VBA-händelser (en fullständig vägledning)
Steg 7: Infoga en kommandoknapp
- Gå nu till arbetsbladet som heter UserForm i arbetsboken. Format den, som visas nedan, och infoga Bilden som tillhandahålls av ExcelWIKI .
- Gå till Developer> Controls> Insert> ActiveX Controls.
- Infoga en knapp enligt bilden.
- När knappen är markerad, gå till Utvecklare> Kontroller> Egenskaper .
- Ändra Namn av knappen för att cmdShowForm och Bildtext till Sök på Information om studenter .
Steg 8: Visa uppslagskoden
- Högerklicka på knappen och Välj Visa kod som visas nedan.
- Ange följande kod:
Private Sub cmdShowForm_Click() StudentLookup.Show End Sub
Steg 9: Utställning av slutresultatet
- Återge till den arbetsblad. Kontrollera att den avmarkerade Design Läge .
- Klicka på knappen för att visa formuläret.
- Välj en elevs namn med hjälp av kombinationsruta Koden returnerar automatiskt studentens kön och ögonfärg.
Kom ihåg att rädda din arbetsbok som en arbetsbok med makroaktiverad arbetsbok , om du inte redan har gjort det, och där har du det, vi använder INDEX & MATCH Arbetsbladfunktioner i Excel VBA-kod för att skapa ett uppslagsformulär.
Läs mer: Excel INDEX-MATCH-formel för att returnera flera värden horisontellt
Slutsats
Excel har många användbara funktioner i arbetsbladet , som kan användas i VBA , som liknar, använder INDEX & MATCH Arbetsbladfunktioner i Excel VBA-kod. Med dessa funktioner kan du utöka din VBA kod. Om du redan vet hur de fungerar i en standard Excel arbetsblad är inlärningskurvan inte så stor genom att anpassa kunskapen för att VBA . Tillgång till arbetsbladets funktioner, i sin egen VBA kod kan vara en riktig tidsbesparing, eftersom man inte behöver utveckla anpassade funktioner för funktioner som redan finns där.
Kommentera gärna och berätta om du använder arbetsbladfunktioner i din VBA-kod och dina VBA-program.
Genomgångsavsnitt: Testa din förståelse
1) Skapa en enkel lista i kolumn A med tre objekt, nämligen mandariner, morötter och apelsiner, och ange sedan i cellen bredvid varje objekt i kolumn B om objekten i kolumn A är frukter eller grönsaker. INDEX & MATCH kombinationsfunktion för att avgöra om morötter är frukt eller grönsaker.
2) Använd den här datamängden från ESPN om NFL:s huvudtränare och respektive lag som de tränar. Skapa ett användarformulär där användaren kan ange namnet på en viss tränare i en textruta. Låt sedan det lag som han tränar visas i en annan textruta när användaren klickar på skicka. INDEX & MATCH arbetsbladets funktionskombination i din VBA-kod.