När man håller på med makron som skapar rapporter och liknande i Excel så är det viktigt att man kan arbeta med kalkylbladsstrukturen via VBA-kod.
Följande kod-exempel visar hur du kan lägga till, ta bort, flytta och sortera kalkylark i en Excelbok.
VBA: Välja visst kalkylark
Sheets("MinRapport").Select |
Sheets("MinRapport").Select
VBA: Välja det första (vänstersta) kalkylarket
VBA: Infoga ett nytt kalkylark (på vald position)
ActiveWorkbook.Sheets.Add Before:=Worksheets("MinRapport") |
ActiveWorkbook.Sheets.Add Before:=Worksheets("MinRapport")
VBA: Kopierar ett kalkylark (placerar ute till höger)
Sheets("MinRapport").Copy After:=Worksheets(Worksheets.Count) |
Sheets("MinRapport").Copy After:=Worksheets(Worksheets.Count)
VBA: Kalkylbladsnamn (som variabel)
'tilldelar variabel aktuellt bladnamn
strBlad = ActiveWindow.Caption
Windows(strBlad).Activate 'aktiverar bladet |
'tilldelar variabel aktuellt bladnamn
strBlad = ActiveWindow.Caption
Windows(strBlad).Activate 'aktiverar bladet
VBA: Flytta kalkylark
Worksheets("MinRapport2").Move After:=Worksheets("MinRapport1") |
Worksheets("MinRapport2").Move After:=Worksheets("MinRapport1")
VBA: Sortera kalkylarken (alfabetisk ordning)
intAntalBlad = ActiveWorkbook.Worksheets.Count
For i = 1 To intAntalBlad
For j = i To intAntalBlad
If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i |
intAntalBlad = ActiveWorkbook.Worksheets.Count
For i = 1 To intAntalBlad
For j = i To intAntalBlad
If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i
VBA: Radera ett visst kalkylark (utan konfirmation)
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
Sheets(i).Activate
strBlad = ActiveCell.Worksheet.Name
If strBlad = "MinRapport" Then
ActiveWindow.SelectedSheets.Delete
End If
Next
Application.DisplayAlerts = True |
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
Sheets(i).Activate
strBlad = ActiveCell.Worksheet.Name
If strBlad = "MinRapport" Then
ActiveWindow.SelectedSheets.Delete
End If
Next
Application.DisplayAlerts = True