Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1200to1204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen, ob Tabellenblatt vorhanden

Prüfen, ob Tabellenblatt vorhanden
MB
Hallo zusammen,
ich möchte beim Öffnen einer Datei prüfen, ob es ein Tabellenblatt mit einem bestimmten Namen ("ad hoc") gibt. Gibt es das Tabellenblatt nicht, soll die Prozedur verlassen werden. Wenn es das Tabellenblatt gibt, soll die Prozedur durchlaufen werden.
Für Eure Hilfe besten Dank im Voraus
MfG
Mike

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
prüfen, ob recherche vorhanden
23.02.2011 09:37:58
selli
hallo mike,
in der recherche findest du dazu viele beispiele.
gruß selli
SheetExists()
23.02.2011 09:38:05
Erich
Hallo Mike,
das könntest du mit dieser Fkt. machen:

Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Sheets(strName) Is Nothing
End Function
Aufrufebn kannst du z. B. so:
If SheetExists("abc") then
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: SheetExists()
23.02.2011 10:09:43
MB
Hallo Erich,
recht herzlichen Dank - genau das was ich gebraucht habe!
Noch eine Frage dazu:
Ich habe praktisch mit
If SheetExists("ad hoc") then
eine große "Klammer" um die Prozedur gemacht.
Wenn das Tabellenblatt vorhanden ist, läuft excel durch die Prozedur, wenn nicht hatte ich
end sub
eingestellt.
Dann erhalte ich aber die Fehlermeldung "If Block ohne End if". Wenn ich das End Sub einfach rauslasse, funktionierts. Das lässt sich doch bestimmt besser lösen, oder?
Jetzt die Frage: Gibt es eine Möglichkeit, die If-Abfrage so zu gestalten, dass nicht der gesamte Code innerhalb stehen muss? --> Ist das Tabellenblatt nicht vorhanden, dann verlasse die Prozedur. Ich kriegs einfach nicht hin.
Nochmals recht herzlichen Dank für die tolle Hilfe!
LG
Mike
Private Sub Workbook_Open()
Dim wks As Worksheet
Dim g As Date
Dim h As Date
Dim a As Date
If SheetExists("ad hoc") Then
Set wks = Sheets("ad hoc")
wks.Select
g = wks.Cells(5, 4)
h = wks.Cells(5, 5)
a = wks.Cells(15, 4)
If Not a = Date Then
If Not g = h Then
a = Date
wks.Cells(15, 4) = a
wks.Cells(5, 4) = h
Range("E6:E11").Select
Selection.Copy
Range("D6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End If
wks.Cells(1, 1).Select
Set wks = Sheets("Limitauslastungen")
wks.Select
wks.Cells(2, 4).Select
Else
End If
End Sub

Anzeige
AW: SheetExists()
23.02.2011 10:18:59
Martin
Hallo Mike,
suchst du vielleicht "Exit Sub"?
Viele Grüße
Martin
AW: SheetExists()
23.02.2011 10:48:55
MB
Danke Martin,
das wars!
Da habe ich ja mal wieder bewiesen, dass ich von VBA kaum ne Ahnung habe.
LG
Mike
Dafür ist das Forum da ;-) OW
23.02.2011 10:56:09
Martin
OW
Wo ist das Problem?
23.02.2011 10:49:58
Erich
Hi Mike,
so wie du den Code gepostet hast, läuft er locker durch.
Ich hab nur nioch ein wenig eingerückt, damit man besser sieht,
bis wo z. B. ein "If" geht:

Private Sub Workbook_Open()
Dim wks As Worksheet
Dim g As Date
Dim h As Date
Dim a As Date
If SheetExists("ad hoc") Then
Set wks = Sheets("ad hoc")
wks.Select
g = wks.Cells(5, 4)
h = wks.Cells(5, 5)
a = wks.Cells(15, 4)
If Not a = Date Then
If Not g = h Then
a = Date
wks.Cells(15, 4) = a
wks.Cells(5, 4) = h
Range("E6:E11").Select
Selection.Copy
Range("D6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End If
End If
wks.Cells(1, 1).Select
Set wks = Sheets("Limitauslastungen")
wks.Select
wks.Cells(2, 4).Select
Else
'  Else ist überflüssig, oder soll dann etwas getan werden?
End If
End Sub
Was meinst du mit "wenn nicht hatte ich end sub eingestellt." genau?
Gabs dann noch ein zweites "End Sub"?
@Martin: Exit Sub sollte man nicht ohne Not verwenden. If ... End If reicht hier völlig aus.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Wo ist das Problem?
23.02.2011 11:10:53
MB
Hallo Erich,
ich bin der Meinung, dass es so etwas unübersichtlich ist. Jetzt steht ja noch nicht soviel da, aber vermutlich wird der code noch etwas anwachsen.
Und da hat mich gestört, das ich bei der If-Abfrage nicht die gewünschte Aktion auslösen kann. Wenn das Tabellenblatt nicht vorhanden ist, die Prozedur zu verlassen. Peinlich: Ich habe End Sub mit Exit Sub verwechselt.
Jetzt sieht´s so aus:
Private Sub Workbook_Open()
Dim wks As Worksheet
Dim g As Date
Dim h As Date
Dim a As Date
If Not SheetExists("ad hoc") Then
Exit Sub
End If
Set wks = Sheets("ad hoc")
wks.Select
g = wks.Cells(5, 4)
h = wks.Cells(5, 5)
a = wks.Cells(15, 4)
If Not a = Date Then
If Not g = h Then
a = Date
wks.Cells(15, 4) = a
wks.Cells(5, 4) = h
Range("E6:E11").Select
Selection.Copy
Range("D6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End If
wks.Cells(1, 1).Select
Set wks = Sheets("Limitauslastungen")
wks.Select
wks.Cells(2, 4).Select
End Sub

Danke für die tolle Unterstützung!
Was würde ich nur ohne dieses Forum tun...
LG Mike
Anzeige

17 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige