Mit VBA prüfen, ob Tabellenblatt existiert
Hallo zusammen,
ich habe folgendes Problem: Ich prüfe in meinem Code, ob ein Tabellenblatt existiert und wenn es existiert soll es gelöscht werden. Soweit so gut. Allerdings wird ein Teil des Names des Tabellenblatts aus einer Combobox ausgelesen. Der Name wird wie folgt erzeugt: "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
Wenn ich aber folgenden Code schreibe, wird nur versucht, das Tabellenblatt zu löschen, welche Bezeichnung gerade in der Combobox ausgewahlt ist und nicht alle Bezeichungen die es in der Combobox auszuwählen gibt. Ich hoffe, ihr versteht mich
On Error Resume Next
If Worksheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ) Is Nothing Then
On Error GoTo 0
Sheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ).Delete
End If
Liebe Grüße, Anna
ich habe folgendes Problem: Ich prüfe in meinem Code, ob ein Tabellenblatt existiert und wenn es existiert soll es gelöscht werden. Soweit so gut. Allerdings wird ein Teil des Names des Tabellenblatts aus einer Combobox ausgelesen. Der Name wird wie folgt erzeugt: "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
Wenn ich aber folgenden Code schreibe, wird nur versucht, das Tabellenblatt zu löschen, welche Bezeichnung gerade in der Combobox ausgewahlt ist und nicht alle Bezeichungen die es in der Combobox auszuwählen gibt. Ich hoffe, ihr versteht mich
On Error Resume Next
If Worksheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ) Is Nothing Then
On Error GoTo 0
Sheets("DiagrammNNZ_" & Tabelle4.ComboBox1.Text ).Delete
End If
Liebe Grüße, Anna
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257674
Url: https://administrator.de/contentid/257674
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo Anna,
wenn ich dich richtig verstanden habe erreichst du das Gewünschte mit folgendem Code
Grüße Uwe
p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode:
wenn ich dich richtig verstanden habe erreichst du das Gewünschte mit folgendem Code
Dim ws As Worksheet, strSuchname As String
Application.DisplayAlerts = False
strSuchname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
For Each ws In Worksheets
If Left(ws.Name, Len(strSuchname)) = strSuchname Then
ws.Delete
End If
Next
Application.DisplayAlerts = True
p.s. Bitte nutze in Zukunft Code-Tags für deinen Quellcode:
<code> Quellcode </code>
. Merci.
Mein Code funktioniert, ist wohl eher deinem Code geschuldet, weil du dein Sheet mit dem neuen Namen natürlich erst vorher erstellen musst das hast du vergessen...
Zitat von @Anna2701:
Der Fehler entsteht nur, wenn das Tabellenblatt existiert. Lösche ich das Tabellenblatt manuell, funktioniert es.
Das kommt weil Ihr immer nur den Code des Makrorekorders blind kopiert, ohne den Code zu verstehen Der Fehler entsteht nur, wenn das Tabellenblatt existiert. Lösche ich das Tabellenblatt manuell, funktioniert es.
'Alte Tabellenblätter löschen
Dim ws As Worksheet, strSuchname As String
Application.DisplayAlerts = False
strSuchname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
For Each ws In Worksheets
If Left(ws.Name, Len(strSuchname)) = strSuchname Then
ws.Delete
End If
Next
Application.DisplayAlerts = True
'Neues Tabellenblatt erzeugen (DiagrammNNZ - <Auswahl von Kombobox>)
Dim strDiagrammanme ' Names des Diagrammblattes
Dim chartNew As Chart
strDiagrammname = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
Set chartNew = Application.Charts.Add
With chartNew
.ChartType = xlColumnClustered
.Name = "DiagrammNNZ_" & Tabelle4.ComboBox1.Text
.SeriesCollection.NewSeries
.SetSourceData Source:=Tabelle4.Range(Tabelle4.Cells(i, j), Tabelle4.Cells(i, 5)) ' Range auf horizontal ändern
.SeriesCollection(1).XValues = Tabelle4.Range(Tabelle4.Cells(k, l), Tabelle4.Cells(k, 5))
End With
With chartNew.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = ymax
End With
Zitat von @Anna2701:
Da hast du leider recht!
Es entsteht immer noch ein Fehler. Immer noch Zeile 21. Fehler:
Laufzeitfehler '1004':
hier läuft es einwandfrei, du musst uns hier also noch irgendetwas verschweigen !Da hast du leider recht!
Es entsteht immer noch ein Fehler. Immer noch Zeile 21. Fehler:
Laufzeitfehler '1004':
Kann einem Blatt nicht den gleichen Namen geben wie einem anderen Blatt, einer Objektbibliothek oder einer Arbeitsmappe, auf der Visual Basic Bezug nimmt.
Jedes Blatt muss einen eindeutigen Namen haben, zwei Mappen mit gleichem Namen geht nicht.Ich habe aber ein neues Problem.
neues Problem > neuer Thread !Sonst würde das Forum hier zu einem heillosen Durcheinander mutieren, merci.
Grüße Uwe
Und den Beitrag dann bitte noch als gelöst markieren. Danke.