Kontroll av status arbetsblad & arbetsbok
I vissa situationer kan det vara nödvändigt att kontrollera om ett arbetsblad existerar eller om en viss arbetsbok är öppen eller inte. Givet statusinformation kan vi styra vad som ska hända, såsom att aktivera ett arbetsblad eller öppna en arbetsbok.
Se också Funktioner för kontroll om fil(er) och mapp(ar) existerar.
Existerar arbetsblad?
Här visas en relativ enkel teknik för att fastställa huruvida ett arbetsblad existerar eller inte i den aktiva arbetsboken.
Existerar inte arbetsbladet när variabeln "wsBlad" tilldelas arbetsbladet returneras värdet "Nothing" vilket här utnyttjas. Genom att slå av den inbyggda felhanteringsrutinen kan vi utvärdera variabelns värde i en IF-sats.
Sub Existerar_Arbetsblad()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As Workbook
Dim wsBlad As WorksheetSet wbBok = ThisWorkbook
On Error Resume Next
Set wsBlad = wbBok.Worksheets("Blad4")
On Error Goto 0If wsBlad Is Nothing Then
MsgBox "Arbetsbladet finns ej!"
Else
wsBlad.Activate
End IfEnd Sub
Vi kan också använda oss av en funktion på följande vis:
Sub Kontroll_Existerar_Fil()
'© 2002 Alla rättigheter XL-Dennis
'Här förutsätts att arbetsboken är öppen
MsgBox ExisterarArbetsBlad(Workbooks("Dennis.xls"), "Excel")
End Sub
Function ExisterarArbetsBlad(Bok As Workbook, Blad As String) As Boolean
'© 2002 Alla rättigheter XL-Dennis
On Error Resume Next
ExisterarArbetsBlad = Not (Bok.Sheets(Blad) Is Nothing)
End Function
Existerar arbetsbok?
Här demonstreras en liknande lösning som ovanstående. En funktion kontrollerar huruvida arbetsboken existerar i den aktiva mappen eller ej. Om arbetsboken finns så öppnas den.
Sub Existerar_Fil()
'© 2002 Alla rättigheter XL-Dennis
Dim sNamn As String
sNamn = "Dennis.xls"If ExisterarBok(sNamn) = True Then
Workbooks.Open (sNamn)
Else
MsgBox "Dennis.xls existerar ej"
End IfEnd Sub
Function ExisterarBok(sBok As String) As Boolean
'© 2002 Alla rättigheter XL-Dennis
ExisterarBok = (Dir(sBok) <> "")
End Function
Är arbetsboken öppen?
Denna lösning nyttjar samma teknik som vid kontroll om ett arbetsblad existerar eller inte.
Sub Arbetsbok_Oppen()
'© 2002 Alla rättigheter XL-Dennis
Dim wbBok As WorkbookOn Error Resume Next
Set wbBok = ThisWorkbook.Path & "\" & Workbooks("Dennis.xls")
On Error GoTo 0If wsbok Is Nothing Then
MsgBox "Dennis.xls är ej öppen"Else
wbBok.Activate
End IfEnd Sub
Även här kan vi också använda oss av en funktion:
Sub Kontroll_Oppen()
'© 2002 Alla rättigheter XL-Dennis
MsgBox ArbetsbokOppen("Dennis.xls")
End Sub
Function ArbetsbokOppen(wbBok As String) As Boolean
'© 2002 Alla rättigheter XL-Dennis
On Error Resume Next
ArbetsbokOppen = UCase(Workbooks(wbBok).Name) Like UCase(wbBok)
End Function