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 Worksheet

   Set wbBok = ThisWorkbook

   On Error Resume Next
  
Set wsBlad = wbBok.Worksheets("Blad4")
  
On Error Goto 0

   If wsBlad Is Nothing Then
      MsgBox
"Arbetsbladet finns ej!"
  
Else
      wsBlad.Activate
  
End If

End 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 If

 End 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 Workbook  

   On Error Resume Next
  
Set wbBok = ThisWorkbook.Path & "\" & Workbooks("Dennis.xls")
  
On Error GoTo 0

    If wsbok Is Nothing Then
      MsgBox
"Dennis.xls är ej öppen"

   Else
      wbBok.Activate
  
End If

 End 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