Använda makroinspelaren i Microsoft Excel

Innehållsförteckning:

Anonim

Öppna Excel och VBE (Visual Basic Editor). Om det inte har ändrats innehåller VBE -fönstret Project Explorer fönstret och Egenskaper fönster (dessa kan nås från Se meny).

Project Explorer: Fungerar som en filhanterare. Hjälper dig att navigera runt koden i din arbetsbok.

Egenskapsfönster: Visar egenskaperna för det för närvarande aktiva objektet (t.ex. Ark 1) i den aktuella arbetsboken (t.ex.Bok 1).

I den här artikeln lär vi oss hur enkelt makroinspelning i Excel.

Övning 1: Spela in ett makro.

Denna övning visar vad som händer när ett makro spelas in och visar skillnaden mellan att spela in absoluta och relativa referenser.

1. Markera cell på ett tomt kalkylblad i en ny arbetsbok C10

2. Starta Makroinspelare med möjlighet att spara makro i Denna arbetsbok. Vid denna tidpunkt skapar VBE en ny Moduler mapp. Det är ganska säkert att gå och titta på det - dina handlingar kommer inte att spelas in. Klicka på [+] bredvid mappen och se att VBE har placerat en modul i mappen och namngett den Modul 1. Dubbelklicka på modulikonen för att öppna dess kodfönster. Byt tillbaka till Excel.

3. Se till att Relativ referens knappen på Sluta spela in verktygsfältet är INTE tryckt in.

4. Välj cell B5 och stoppa inspelaren.

5. Byt till VBE och titta på koden:

Område ("B5"). Välj

6. Spela nu in ett annat makro, exakt på samma sätt, men den här gången med Relativ referens knappen tryckt in.

7. Byt till VBE och titta på koden:

ActiveCell.Offset (-5, -1) .Range ("A1"). Välj

8. Spela nu in ett annat makro, men i stället för att markera cell B5, välj ett block av celler 3x3 som börjar med B5 (välj celler B5: F7)

9. Byt till VBE och titta på koden:

ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Välj

10. Spela upp makron, efter att först ha valt en annan cell än C10 (för Macro2 och Macro3 måste startcellen vara i rad 6 eller nedan - se steg 11 nedan)

Makro1 - flyttar alltid markeringen till B5
Makro2 - flyttar markeringen till en cell 5 rader uppåt och en kolumn till vänster om den markerade cellen.
Makro3 - väljer alltid ett block med sex celler som börjar med 5 rader uppåt och en kolumn till vänster om den markerade cellen.

11. Kör Macro2 men tvinga fram ett fel genom att markera en cell i rad 5 eller högre. Makrot försöker välja en obefintlig cell eftersom dess kod säger att den ska välja en cell 5 rader ovanför startpunkten, och det är utanför toppen av arket. Tryck Felsöka tas till den del av makrot som orsakade problemet.

OBS: När VBE är i felsökningsläget markeras den kodrad som orsakade problemet med gult. Du måste "återställa" makrot innan du kan fortsätta. Klicka på Återställa på VBE -verktygsfältet eller gå till Kör> Återställ. Den gula markeringen försvinner och VBE kommer ur felsökningsläget.

12. Det är viktigt att försöka förutse användarfel så här. Det enklaste sättet är att ändra koden för att helt enkelt ignorera fel och gå vidare till nästa uppgift. Gör detta genom att lägga till raden …

Vid fel Återuppta nästa

… omedelbart ovanför makroens första rad (under raden Submakro1 ()

13. Kör Makro2 som tidigare, börjar för högt på arket. Den här gången berättar raden du skrev för Excel att ignorera kodraden som den inte kan köra. Det finns inget felmeddelande och makrot avslutas efter att ha gjort allt det kan. Använd denna metod för att hantera fel med försiktighet. Detta är ett mycket enkelt makro. Ett mer komplext makro skulle förmodligen inte fungera som förväntat om fel helt enkelt ignorerades. Dessutom har användaren ingen aning om att något har gått fel.

14. Ändra koden för Makro2 att inkludera en mer sofistikerad felhanterare så här:

Undermakro2 ()

Vid fel GoTo ErrorHandler

ActiveCell.Offset (-5, -1) .Range ("A1"). Välj

Avsluta Sub

ErrorHandler:

MsgBox "Du måste börja under rad 5"

Avsluta Sub

15. Den här gången presenteras användaren med en dialogruta när något går fel. Om det inte finns något fel får raden Exit Sub makrot att avsluta efter att det har gjort sitt jobb - annars skulle användaren se meddelandet även om det inte fanns något fel.

Förbättra inspelade makron

Det bra sättet att lära sig grunderna i VBA är att spela in ett makro och se hur Excel skriver sin egen kod. Men ofta innehåller inspelade makron mycket mer kod än vad som är nödvändigt. Följande övningar visar hur du kan förbättra och effektivisera kod som har tagits fram av ett inspelat makro.

Övning 2: Förbättra på inspelade makron

Denna övning visar att när makron spelas in genereras ofta mer kod än nödvändigt. Det visar användningen av With -satsen för att förbereda koden.

1. Välj en cell eller ett cellblock.

2. Starta makroinspelaren och ring makrot FormatCells. Inställningen Relativa referenser är inte relevant.

3. Gå till Format> Celler> Teckensnitt och välj Times New Roman och Röd.
Gå till Mönster och välj Gul.
Gå till Inriktning och välj Horisontell, mitten
Gå till siffra och välj Valuta.

4. Klicka på OK och stoppa inspelaren.

5. Klicka på Ångra knappen (eller Ctrl+Z) för att ångra dina ändringar i kalkylbladet.

6. Välj ett cellblock och kör FormatCells makro. Observera att det inte går att ångra! Skriv in cellerna för att kontrollera resultatet av formateringen.

7. Titta på koden:

Sub FormatSelection ()

Selection.NumberFormat = "$#, ## 0.00"

Med urval

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = Falskt

.Orientation = 0

.ShrinkToFit = Falskt

.MergeCells = Falskt

Sluta med

Med urval. Font

.Name = "Times New Roman"

.FontStyle = "Regular"

. Storlek = 10

.Strikethrough = Falskt

.Superscript = Falskt

.Subscript = Falskt

.OutlineFont = Falskt

.Skugga = Falskt

.Underline = xlUnderlineStyleNone

.ColorIndex = 3

Sluta med

Med urval.Interiör

.ColorIndex = 6

.Mönster = xlSolid

.PatternColorIndex = xlAutomatic

Sluta med

Avsluta Sub

Ändra teckensnittet till Times New Roman
Ändra teckensnittsfärgen till Röd
Ändra fyllningsfärgen till Gul
Klicka på Centrum knapp
Klicka på Valuta knapp

13. Titta på koden. Du får fortfarande massor av saker som du inte nödvändigtvis vill ha. Excel registrerar alla standard inställningar. De flesta av dessa är säkra att ta bort.

14. Experimentera med att redigera direkt i koden för att ändra färger, teckensnitt, nummerformat etc.

Övning 3: Titta på ett makro som spelas in

Denna övning visar att du kan lära dig genom att titta på makrobyggnaden medan den spelas in. Det är också ett exempel på när With -uttalandet ibland inte är lämpligt.

1. Öppna filen VBA01.xls.

Även om detta kalkylblad är visuellt OK och kan förstås av användaren, kan närvarande tomma celler orsaka problem. Testa att filtrera data och se vad som händer. Gå till Data> Filter> Autofilter och filtrera efter region eller månad. Det är klart att Excel inte gör samma antaganden som användaren gör. De tomma cellerna måste fyllas.

2. Kakel Excel- och VBE-fönstren (vertikalt) så att de ligger sida vid sida.

3. Välj vilken cell som helst i data. Om det är en tom cell måste den ligga intill en cell som innehåller data.

4. Starta makroinspelaren och ring makrot FillEmptyCells. Ställ in för att spela in Relativa referenser.

5. I VBE-fönstret letar du efter och dubbelklickar på modulen (Modul1) för den aktuella arbetsboken för att öppna redigeringsfönstret. Stäng sedan av fönstret Projektutforskare och fönstret Egenskaper (endast för att göra utrymme).

6. Spela in det nya makrot enligt följande:

Steg 1. Ctrl+* (för att välja den aktuella regionen)
Steg 2. Redigera> Gå till> Special> Blankor> OK (för att markera alla tomma celler i den aktuella regionen)
Steg 3. Skriv = [Pil upp] tryck sedan på Ctrl+Enter (för att placera din skrivning i alla markerade celler)
Steg 4. Ctrl+* (för att välja den aktuella regionen igen)
Steg 5. Ctrl+C (för att kopiera urvalet - vilken metod som helst kommer att göra)
Steg 6. Redigera> Klistra in special> Värden> OK (för att klistra in data på samma ställe men kassera formlerna)
Steg 7. Esc (för att komma ur kopieringsläge)
Steg 8. Stoppa inspelningen.

7. Titta på koden:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select

Selection.SpecialCells (xlCellTypeBlanks) .Välj

Selection.FormulaR1C1 = "= R [-1] C"

Selection.CurrentRegion.Select

Urval. Kopiera

Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _

Falskt, Transponera: = Falskt

Application.CutCopyMode = Falskt

Avsluta Sub

8. Observera användningen av mellanslag-och-understrykningen ”_” för att beteckna delningen av en enda kodrad till en ny rad. Utan detta skulle Excel behandla koden som två separata uttalanden.

9. Eftersom detta makro har spelats in med genomtänkta kommandon, finns det lite onödig kod. I Klistra in special allt efter ordet “xlValues” kan raderas.

10. Prova makrot. Använd sedan AutoFilter -verktyget och notera skillnaden.