Upptäcka Typer Ark i VBA

February 23

Om du skriver makron som behandlar olika kalkylblad i en arbetsbok, kan du ha ett behov av att räkna ut vilken typ av kalkylblad finns i arbetsboken, innan du gör all behandling. Detta kan vara särskilt kritisk, eftersom vissa VBA-kommandon fungerar bara på vissa typer av kalkylblad.

Innan du kan räkna ut vilka typer av arbetsblad är i en arbetsbok, är det bra att veta hur Excel lagrar internt några av de objekt som utgör arbetsboken. Excel håller både en Kalkylblad insamling och en Charts samling. Den Blad kollektionen består av kalkylbladsobjekt, och diagram kollektionen består av diagrammet arkobjekt. Diagram arkobjekt är de diagram som tar upp ett helt kalkylblad; det inkluderar inte de som är föremål bädda i ett kalkylblad.

Intressant nog kalkylblad och diagrambladsobjekt är också medlemmar i Ark samlingen. Så, om du vill bearbeta en arbetsbok i den ordning som arken inträffar, är det enklast att göra det genom att stega igenom Sheets samlingen. När du gör det, kan du undersöka Typ egendom enskilda objekt inom insamling för att avgöra vilken typ av föremål det är. Excel definierar fyra typer av objekt som kan tillhöra den blad:

  • xlWorksheet. Det här är en vanlig kalkylblad.
  • xlChart. Det här är ett diagram.
  • xlExcel4MacroSheet. Det är en makro ark, såsom det används i Excel 4.0.
  • xlExcel4IntlMacroSheet. Detta är en internationell makroblad, som används i Excel 4.0.

Du kanske frestas att tro att titta på listan över arktyper räcker. Intressant dock Excel inte alltid tillbaka vad du kan förvänta dig för typ egendom. Istället, om du undersöker Typ egenskapen för ett diagram, returneras ett värde som motsvarar xlExcel4MacroSheet. Detta kan orsaka problem för alla makron.

Vägen runt detta, då, är att jämföra namnet på varje objekt i Sheets samlingen mot dem i Charts samlingen. Om namnet är i båda samlingarna, än det är säkert att anta att arket är ett diagram. Om det inte är i båda, då kan du analysera vidare för att se om kalkylbladet är en av de andra typerna. Följande makro, SheetType, följer exakt denna process:

Sub SheetType ()
Dim iCount As Integer
Dim iType As Integer
Dim Stemp As String
Dim oChart Som diagram
Dim bFound As Boolean

Stemp = ""
För iCount = 1 Till Sheets.Count
iType = Ark (iCount) .Type
Stemp = Stemp & Sheets (iCount) .name & "är en"

bFound = False
För varje oChart I diagram
Om oChart.Name = Sheets (iCount) .name Därefter
bFound = True
End If
Nästa oChart

Om bFound Sedan
Stemp = Stemp & "diagramblad."
Else
Välj ärende iType
Case xlWorksheet
Stemp = Stemp & "kalkylblad."
Case xlChart
Stemp = Stemp & "diagramblad."
Case xlExcel4MacroSheet
Stemp = Stemp & "n Excel 4 makroblad."
Case xlExcel4IntlMacroSheet
Stemp = Stemp & "n Excel 4 internationella makroblad"
Case Else
Stemp = Stemp & "n okänd typ av blad."
End Select
End If
Stemp = Stemp & vbCrLf
Nästa iCount
MsgBox Stemp
End Sub

När du kör makrot, ser du en enda meddelanderuta som visar namnet på varje ark i arbetsboken, tillsammans med vilken typ av plåt är det.

ExcelTips är din källa för kostnadseffektiv Microsoft Excel utbildning. Detta tips (2538) gäller för Microsoft Excel 97, 2000, 2002, och 2003. Du kan hitta en version av detta tips för menyfliksområdet i Excel (Excel 2007 och senare) här: Upptäcka Typer Ark i VBA.