Hoe kolommen invoegen met vba?
In deze zelfstudie zullen we zien hoe u een kolom kunt invoegen met behulp van VBA-code in Excel. We zullen ook onderzoeken wat de verschillende manieren zijn om hiervoor een macro te schrijven.
Voeg een enkele kolom in met VBA
Om een kolom in te voegen met behulp van VBA-code, moet u de eigenschap “Gehele kolom” gebruiken met de methode “Invoegen”. Met de eigenschap gehele kolom kunt u met behulp van een cel naar de gehele kolom verwijzen en vervolgens een nieuwe kolom invoegen. Standaard wordt er een kolom ingevoegd vóór de cel die u noemde.
- Geef eerst een cel op met behulp van het bereikobject.
- Voer nu een punt (.) in om de lijst met eigenschappen en methoden te krijgen.
- Selecteer daarna de eigenschap “Gehele kolom” of typ deze.
- Voer aan het einde opnieuw een punt (.) in en selecteer de methode “Invoegen” of typ deze.
Range("A1").EntireColumn.Insert
Uw code is hier klaar om een kolom in te voegen. Wanneer u deze code nu uitvoert, wordt er onmiddellijk een nieuwe kolom vóór kolom A ingevoegd.
Meerdere kolommen invoegen
Er zijn twee manieren om meerdere kolommen in een spreadsheet in te voegen die ik heb gevonden. De eerste is dezelfde invoegmethode die we in het bovenstaande voorbeeld hebben gebruikt. Hierbij moet u een kolombereik opgeven waarvan het nummer gelijk is aan het nummer van de kolom die u wilt invoegen.
Stel nu dat u 5 kolommen na kolom C wilt invoegen, voor het geval u code als deze kunt gebruiken.
Range("C:G").EntireColumn.Insert
Eerlijk gezegd vond ik deze methode niet erg nuttig, omdat je het bereik moet wijzigen als je de code zelf wilt wijzigen. Dus hier is de tweede methode.
'variables to use in the code Dim iCol As Long Dim iCount As Long Dim i As Long 'to get the number of columns that you want to insert with an input box iCount = InputBox(Prompt:="How many column you want to add?") 'to get the column number where you want to insert the new column iCol = InputBox _ (Prompt:= _ "After which column you want to add new column? (Enter the column number)") 'loop to insert new column(s) For i = 1 To iCount Columns(iCol).EntireColumn.Insert Next i
Wanneer u deze code uitvoert, wordt u gevraagd het aantal kolommen in te voeren dat u wilt toevoegen en vervolgens het kolomnummer waaraan u al deze nieuwe kolommen wilt toevoegen. Het gebruikt een FOR-lus (For Next) om het aantal door u genoemde kolommen in te voeren.
Voeg kolommen in op basis van celwaarden
Als u kolommen wilt invoegen op basis van een celwaarde, kunt u de volgende code gebruiken.
Dim iCol As Long Dim iCount As Long Dim i As Long iCount = Range("A1").Value iCol = Range("B1").Value For i = 1 To iCount Columns(iCol).EntireColumn.Insert Next i
Wanneer u deze macro uitvoert, wordt het aantal kolommen uit cel A1 gebruikt en de kolom waaraan u kolommen wilt toevoegen uit cel B1.
Voeg een kolom in zonder opmaak
Wanneer u een kolom invoegt waarvan de kolom erboven een specifieke opmaak heeft, krijgt de kolom in dat geval automatisch ook die opmaak. En de eenvoudigste manier om met deze situatie om te gaan, is door duidelijke formaten te gebruiken. Beschouw de volgende code.
Columns(7).EntireColumn.Insert Columns(7).ClearFormats
Wanneer u de bovenstaande code uitvoert, wordt er een nieuwe kolom ingevoegd vóór de 7e kolom. Wat er nu gebeurt, is dat wanneer u een kolom vóór de 7e kolom invoegt, deze nieuwe kolom de 7e kolom wordt, waarna de tweede regel code de formaten ervan verwijdert.
Voeg een gekopieerde kolom in
U kunt dezelfde methode ook gebruiken om een kolom te kopiëren en deze vervolgens ergens anders in te voegen. Zie de volgende code.
Application.CutCopyMode = False With Worksheets("Data") .Columns(5).Copy .Columns(9).Insert Shift:=xlShiftDown End With Application.CutCopyMode = True