Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1476to1480
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

Fehler in der Schleife bzw. der Variable

Fehler in der Schleife bzw. der Variable
04.03.2016 09:08:19
Christian
Guten Tag,
das ist mein erster Beitrag hier im Forum nachdem ich mir schon sehr viele Tipps über die Google-Suche und damit über dieses Forum geholt habe.
Ich bin VBA/Makro Neuling also seid bitte nicht zu hart wenn ich einen sehr dummen Fehler im untenstehenden Code gemacht hab.
Was ich will: Es soll auf dem Sheet "Tabelle Sortiert" die Columm A ab Spalte 2 durchsucht werden und wenn etwas in der Zelle steht soll der Zellenname benutzt werden um ein neues Sheet hinter das letzte Sheet zu erstellen.
Mit dem ersten Namen funktioniert dies auch, beim zweiten Durchlauf scheint die Überprüfung sowie das erstellen des Sheets zu klappen, jedoch scheint in "Titel" nichts drin zu stehen (Empty) und dadurch stoppt das Makro und ich bekomm einen Fehler.
Sub InhaltChecken()
Dim Titel As Variant
Dim i As Long
With Sheets("Tabelle Sortiert")
For i = 2 To 10
If .Cells(i, "A").Value = "" Then
Else
Titel = Cells(i, 1)
Sheets.Add After:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Titel
End If
Next i
End With
End Sub
Über Lösungsvorschläge bzw. Anregungen bedanke ich mich schon im Vorraus.
LG Christian

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in der Schleife bzw. der Variable
04.03.2016 09:18:10
Daniel
Hi
Bei Titel = Cells(i, 1) fehlt der Punkt vor dem Cells.
Beachte, dass nach dem Einfügen eines neuen Blattes dieses das aktive Blatt ist und sich alle Ranges und Cells ohne Blattangabe davor dann auf das neue Blatt beziehen.
Gruß Daniel

AW: Fehler in der Schleife bzw. der Variable
04.03.2016 10:05:44
Werner
Hallo Christian,
versuch mal
Sub InhaltChecken()
Dim Titel As Variant
Dim i As Long
For i = 2 To 10
With Sheets("Tabelle Sortiert")
If .Cells(i, 1).Value  "" Then
Titel = .Cells(i, 1)
Sheets.Add After:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Titel
End If
End With
Next i
End Sub
kann aber gerade nicht testen.
Gruß Werner

Anzeige
AW: Fehler in der Schleife bzw. der Variable
04.03.2016 11:35:16
Werner
Hallo Daniel,
hier noch mit Prüfung, ob ein Tabellenblatt mit diesem Namen schon vorhanden ist.
Public Sub InhaltChecken()
Dim Titel As String
Dim i As Long
For i = 2 To 10
With Sheets("Tabelle Sortiert")
If .Cells(i, 1).Value  "" Then Titel = .Cells(i, 1)
If Not SheetExists(Titel) Then
Sheets.Add after:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Titel
End If
End With
Next i
End Sub
Public Function SheetExists(Titel As String) As Boolean
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
If Sh.Name = Titel Then
SheetExists = True
Exit Function
End If
Next Sh
SheetExists = False
End Function
Gruß Werner

Anzeige
AW: Fehler in der Schleife bzw. der Variable
04.03.2016 12:44:10
Christian
Hallo Zusammen,
die erste Antwort hat mein Problem schon gelöst! Vielen Dank, auch für die anderen Antworten!
Sub InhaltChecken()
Dim Titel As Variant
Dim i As Long
With Sheets("Tabelle Sortiert")
For i = 2 To 10
If .Cells(i, "A").Value = "" Then
Else
Sheets("Tabelle Sortiert").Select
Titel = .Cells(i, 1)
Sheets.Add After:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Titel
End If
Next i
End With
End Sub
Gruß,
Christian

AW: Fehler in der Schleife bzw. der Variable
04.03.2016 15:11:21
Werner
Hallo Christian,
wenn du meinst. Dann lass den Code ein zweites mal laufen, ohne vorher die Blattnamen auf Blatt "Tabelle Sortiert" im Bereich A2:A10 zu löschen.
Auch wenn du es vielleicht nicht brauchst/willst hier trotzdem nochmals erweitert.
1. Prüfung ob Tabellenblattname bereits vorhanden
2. Pfüfung auf ungültige Zeichen im Tabellenblattnamen
Public Sub InhaltChecken()
Dim Titel As String
Dim i As Long
For i = 2 To 10
With Sheets("Tabelle Sortiert")
If .Cells(i, 1).Value  "" Then Titel = .Cells(i, 1)
Titel = LegalSheetName(Titel)
If Not SheetExists(Titel) Then
Sheets.Add after:=Worksheets(Worksheets.Count)
Sheets(Worksheets.Count).Name = Titel
End If
End With
Next i
End Sub
Public Function SheetExists(Titel As String) As Boolean
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
If Sh.Name = Titel Then
SheetExists = True
Exit Function
End If
Next Sh
SheetExists = False
End Function
Function LegalSheetName(Titel As String) As String
Dim arrNotAllowed As Variant
Dim n As Integer
'Im Tabellennamen nicht zulässige Zeichen
arrNotAllowed = Array(":", "\", "/", "?", "*", "[", "]")
'unerlaubte Zeichen durch "" ersetzen
For n = 0 To UBound(arrNotAllowed)
Titel = Replace(Titel, arrNotAllowed(n), "")
Next
'Namen auf 31 Zeichen begrenzen
LegalSheetName = Left(Titel, 31)
End Function
Vielleicht kann es ja ein anderer Mitleser brauchen.
Gruß Werner
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige