wie kann ich vor der ausführung eines makros überprüfen, ob das tabellenblatt, welches im makro entsteht, schon vorhanden ist (z.b. bei der zweiten ausführung des makros)?
gruss rahel
149. feststellen, ob worksheet vorhanden ist
hier ein Beispiel, welches Du relativ einfach entsprechend abändern kannst:
Sub TabAuswahl()
Dim Sh As Worksheet
Dim sName$
sName = InputBox("Bitte Tabellenname auswählen!")
For Each Sh In Worksheets
If InStr(Sh.Name, sName) > 0 Then
Sh.Select
Exit Sub
End If
Next Sh
Beep
MsgBox "Kein Blatt gefunden!"
End Sub
Gruß Hajo
einfach so:
Gruss
Timo
Dim i As Byte
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Pivot_Tabelle_Fragen" Then
MsgBox ("Diese Auswertung wurde bereits getätigt!")
Else
If ComboBox1.ListIndex = 0 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Fragen"
...
End If
End If
Next i
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Pivot_Tabelle_Themen" Then
MsgBox ("Diese Auswertung wurde bereits getätigt!")
Else
If ComboBox1.ListIndex = 0 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Themen"
...
End If
End If
Next i
Gruss
Timo
der fehler tritt an folgender stelle auf:
Dim i As Byte
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Pivot_Tabelle_Fragen" Then
MsgBox ("Diese Auswertung wurde bereits getätigt!")
Else
If ComboBox1.ListIndex = 0 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Fragen" <<<<<<<<<<<<<<<<<<<<
...
End If
End If
Next i
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Pivot_Tabelle_Themen" Then
MsgBox ("Diese Auswertung wurde bereits getätigt!")
Else
If ComboBox1.ListIndex = 0 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Themen"
...
End If
End If
Next i
wenn ich dann jedoch den vb-editor schliesse, ist das tabellenblatt mit der pivot-tabelle trotzdem erstellt worden. ausserdem ist noch ein leeres tabellenblatt vorhanden, welches aktiviert ist.
das Verhalten von Excel ist logisch, da Dein Code unlogisch ist. ;-)
Nehmen wir mal an, daß dritte Tabellenblatt wäre "Pivot_Tabelle_Fragen". Für i=1 trifft dann die Bedingung
If Worksheets(i).Name = "Pivot_Tabelle_Fragen" Then
nicht zu und der Else-Zweig wird abgearbeitet. Und dann knallt es eben bei dem Versuch, ein bereits existierendes Tabellenblatt einzufügen.
Konsequenz: Du mußt die For-Next-Schleife zuerst komplett durchlaufen, um festzustellen, daß kein Tabellenblatt "Pivot_Tabelle_Fragen" heißt. Wenn doch, kannst Du z.B. das Makro abbrechen. Ansonsten Makro mit Einfügen des Blattes fortsetzen. Das Ganze geht dann etwa so:
Außerdem solltest Du i nicht als Byte, sondern als Integer oder Long deklarieren.
Gruß
Martin Beck
liebe grüsse, rahel
Gruß
Martin Beck
wie sieht das ganze aus, wenn es mehrere möglichkeiten gibt. ich meine damit, es gibt vier möglichkeiten für den namen des enstehenden tabellenblattes.
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Pivot_Tabelle_Fragen" Then
MsgBox ("Diese Auswertung wurde bereits getätigt!")
Exit Sub 'Makro wird abgebrochen
End If
Next i
If ComboBox1.ListIndex = 0 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Fragen"
...
If ComboBox1.ListIndex = 3 Then
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Pivot_Tabelle_Regionen"
dann die Abfrage in:
ändern, "Like" bietet sich eh immer an, es ist schneller und variabler.
Gruß
Micha
gruss, rahel
füge halt die Schleife 4x ein und prüfe jeweils auf eine der 4 Tabellen.
Gruß
Martin Beck