Anzeige
Archiv - Navigation
1700to1704
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 der Blattname schon vorhanden ist

Prüfen ob der Blattname schon vorhanden ist
24.07.2019 15:40:18
Donna
Einen schönen Nachmittag!
Ich habe mal wieder ein kleines Problem mit meiner Prozedur.
Ihr grober Aufbau:
Aus einer Excel-Tabelle (genannt Variante1) werden Daten in ein anderes Excel-Dokument (genannt Formulare) übertragen.
Vor der Übertragung öffnet die Prozedur das Dokument "Formulare", kopiert das erste Tabellenblatt (genannt Vorlage) und hängt es hinten an.
Dann kopiert er den Namen der in der Tabelle "Variante1" in der letzten beschriebenen Zelle von Spalte A steht.
Diesen Namen fügt er als Blattnamen des neu eingefügten Tabellenblattes im Dokument "Formulare" ein.
Danach erstellt er von diesem Tabellenblatt ein PDF-Dokument, speichert das Dokument "Formulare" ab und schließt es wieder.
Zum Schluss ist man wieder in der Ausgangsdatei und in der Tabelle "Variante1" und kann die nächste Zeile beschreiben.
Bis dahin hat alles mehr als super funktioniert und ich war richtig stolz.
Dann kam mir der Gedanke, dass so ein Lieferantenname auch mehrfach auftreten kann und es doch schön wäre, wenn die Prozedur dann nicht abbrechen würde, sondern nach einem neuen Namen fragt und diesen gleich einträgt.
Ich hab versucht das umzusetzen, aber die Prozedur will nicht so recht meine Vorstellungen umsetzen.
Folgendes hab ich mir ausgedacht:
dim a as string
For a = 1 To Sheets.Count
If Sheets(a).Name = Workbooks("NeuanlaufEinkaufsteil").Worksheets("Variante1").Range("A" & LZa) = True Then
ActiveSheet.Name = InputBox("Der Tabellenname ist bereits vergeben. Bitte tragen Sie hier einen neuen ein:")
Else
ActiveSheet.Name = Workbooks("NeuanlaufEinkaufsteil").Worksheets("Variante1").Range("A" & LZa)
End If
Next
Wenn ich die Prozedur mit diesem Extra durchlaufen lassen will und mit Absicht einen Namen doppelt verwende (um halt die Prozedur zu testen) , dann stoppt es immer an der Zeile nach Else. Die Fehlermeldung lautet: der Name kann nicht doppelt vergeben werden.
Ich hoffe ihr könnt mir helfen, ich hab schon unzählige Varianten versucht und bin langsam mit meinem Latein am Ende.
Liebe Grüße
Donna

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob der Blattname schon vorhanden ist
24.07.2019 15:53:00
Torsten
Hallo Donna,
versuch mal:

Function WorksheetExists(wsName As String) As Boolean
Dim ws As Worksheet
Dim ret As Boolean
ret = False
wsName = UCase(wsName)
For Each ws In ThisWorkbook.Sheets
If UCase(ws.Name) = wsName Then
ret = True
Exit For
End If
Next
WorksheetExists = ret
End Function
Sub test()
Dim a As String
For a = 1 To Sheets.Count
If WorksheetExists(a) Then
ActiveSheet.Name = InputBox("Der Tabellenname ist bereits vergeben. Bitte tragen Sie hier einen  _
neuen ein:")
Else
ActiveSheet.Name = Workbooks("NeuanlaufEinkaufsteil").Worksheets("Variante1").Range("A" & LZa)
End If
Next
End Sub

Gruss Torsten
Anzeige
AW: Prüfen ob der Blattname schon vorhanden ist
25.07.2019 11:14:59
Donna
Ich hab deinen Vorschlag mal ausprobiert.
Kann es sein, dass eine For-Schleife nur mit Integer funktioniert?
Als ich es das erst Mal probiert habe, kam die Meldung "Fehler beim Kompilieren: Argumenttyp ByRef unverträglich" bei If WorksheetExists(a) Then.
Da ist mir aufgefallen, dass a noch als Integer dimensioniert war.
Dann habe ich es wie bei dir in String geändert und dann kam an dieser Stelle For a = 1 To Sheets.Count "Typen unverträglich"
Bei beiden Fehlertypen war immer nur das a markiert.
AW: Prüfen ob der Blattname schon vorhanden ist
24.07.2019 17:45:35
{Boris}
Hi,
quick and dirty:
Sub til()
Dim s As String
On Error Resume Next
s = Worksheets(Cells(1, 1)).Name
If Err Then
MsgBox “Gibt’s noch nicht“
Err.Clear
Else
MsgBox “Gibbet schon“
End If
On Error Goto 0
End Sub
VG Boris
Anzeige
AW: Prüfen ob der Blattname schon vorhanden ist
25.07.2019 11:31:57
Donna
Diese Variante habe ich gerade auch versucht und sie hat sofort funktioniert. Vielen Dank für deine Hilfe.
AW: Prüfen ob der Blattname schon vorhanden ist
25.07.2019 11:54:37
Donna
Kommando zurück. Ich habe jetzt ein weiteres Beispiel getestet um zu sehen, ob die Prozedur jetzt erkennt, dass es den Namen noch nicht gibt.
Leider hat sie wieder nach einem neuen Namen gefragt, obwohl der Name noch nicht vorhanden ist.
Die Prozedur scheint den ersten Teil komplett zu ignorieren.
Zeig mal den ganzen Code...
25.07.2019 11:57:42
{Boris}
Hi,
...am Besten mittels Beispielmappe.
VG Boris
AW: Prüfen ob der Blattname schon vorhanden ist
25.07.2019 12:01:09
Donna
So sieht meine Prozedur aus (Ausschnitt aus dem Teil, der Probleme macht):
'die Datei "Formulare" öffnen, das Tabellenblatt "Vorlage" kopieren und hinten anhängen
Set wbFormulare = Workbooks.Open("C:\Users\t0226770\Documents\Neuanlauf Einkaufsteil\Formulare.xlsx")
i = Sheets.Count
Sheets("Vorlage").Copy After:=Sheets(i)
'hier wird geprüft ob der Tabellenname bereits vergeben ist
'wenn ja, dann geht eine InputBox auf, in die man einen neuen Namen eingeben kann
On Error Resume Next
a = Workbooks("NeuanlaufEinkaufsteil").Worksheets("Variante1").Range("A" & LZa)
If Err Then
ActiveSheet.Name = Workbooks("NeuanlaufEinkaufsteil").Worksheets("Variante1").Range("A" & LZa)
Err.Clear
Else
ActiveSheet.Name = InputBox("Der Tabellenname ist bereits vergeben. Bitte tragen Sie hier einen neuen Namen ein:")
End If
On Error GoTo 0
'das kopierte auswählen und eine Variable für den Namen des Tabellenblattes definieren
Sheets(Sheets.Count).Select
Blattname = ActiveSheet.Name
Wenn ich in meine Liste mit Absicht den selben Namen eingebe und dann auf erstellen klicke, dann tut die Prozedur was sie soll und weist mich darauf hin, dass es den Namen schon gibt und soll doch bitte einen neuen eingeben.
Wenn ich dann aber in meiner Liste einen neuen Namen eingebe und auf erstellen klicke, dann sagt die Prozedur wieder "Bitte gib einen neuen Namen ein".
Kann es sein, dass ich die Reihenfolge der Befehle ändern muss?
Anzeige
Na ja...
25.07.2019 12:23:56
{Boris}
Hi,
Du musst den Code schon VOLLSTÄNDIG übernehmen. Dann funktioniert das auch.
Stichwort: .Name
VG Boris
AW: Na ja...
25.07.2019 15:17:45
Donna
Hab ich geändert und jetzt fragt die Prozedur nicht mehr, wenn der Name schon vorhanden ist nach einem neuen Namen.
Sie macht was sie soll, wenn der Name noch nicht vorhanden war. Aber sobald ich versuche zu testen was passiert, wenn ich einen Namen doppelt vergebe, dann trägt die Prozedur einfach den Namen "Vorlage" + Zahl ein.
Warum erscheint jetzt die InputBox nicht mehr?
PS: Ich kann keine Dateien hochladen. Aber ich kann hier gerne die komplette Prozedur reinstellen, wenn das helfen könnte mein Problem zu lösen.
Anzeige
Dann zeig mal den gesamten Code oT
25.07.2019 18:58:21
{Boris}
...
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen