Clever-Excel-Forum

Normale Version: automatische Erstellung mehrerer Tabellenblätter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
hm,... so, dann jetzt die "Echt-Datei" gekürzt. Wenn ich exakt diese Datei öffne und das darin enthaltene Makro ausführe, erhalte ich den Fehlercode 400 in Tabelle 6
Es funktioniert also bis Zeile 7 im Tabellenblatt 1.
Ab Warenlieferant "Ferdinand Bernhofer GesmbH" steht das Makro und der Fehler 400 kommt,..


Huh Huh Huh

[attachment=9471]
Hallo,

bei mir kommt keine 400-Fehlermeldung sondern 1004 und in der Erläuterung steht. Stellen Sie sicher, das der eingegebene Namen maximal 31 Zeichen aufweist und das ist bei dem Eintrag nicht mehr der Fall.
Hallo,

so wie Stefan es festgestellt hat, liegt es an der Länge der Namen.
Kannst ja testen , indem Du die Namen so zuweist:


Code:
   ws.Name = .Cells(i, "C") & Chr(32) & Left(.Cells(i, "D"), 6)

Außerdem solltest Du den Code unbedingt in ein allgemeines Modul packen!!!
hm,... ok. Also mit dem 6) in dem Code begrenze ich den Namen dann auf 6 Stellen, richtig?
Wenn ich also maximal 31 Stellen habe, könnte ich die 6) auf maximal 31) umstellen?

und: Was meinst du mit "einem allgemeinem Modul"????  Huh

Code umgeschrieben,... Jetzt läuft es schonmal viel weiter. Meine echte Datei hat allerdings 292 Zeilen. Und nun kommt Fehlercode 400 in Zeile 132   :22:

Zudem sollte der Name der Lieferanten im Tabellenblatt 1 schon komplett bleiben und nicht auf 6 Stellen gekürzt werden.
Die Namen der Tabellenblätten sind nicht so wichtig. da könnte auch zb nur die Nummer aus Spalte C drinn stehen (wenn das hilft?) :20:
Hallo,

schau mal:

 Wie und wo fügt man einMakro ein


Was den Fehler betrifft, gehe ich davon aus, dass Du an Speichergrenzen kommst.
Du kannst nur so viele Tabellen einfügen, wie es der Arbeitsspeicher verarbeiten kann.
Lies dazu hier:

Spezifikationen und Beschränkungen

und in folgender Zeile des Codes:

ActiveSheet.Hyperlinks.Add Anchor:=.Cells(i, 4), Address:="", SubAddress:= _
        "'" & ws.Name & "'!A1", TextToDisplay:= _
        ws.Name


Die rot markierten Stelle ersetzt Du mit: .Cells(i, 4) ,unbedingt mit dem Punkt vor Cells
HA!  :21:

Fehler gefunden! (Leider aber noch nicht die Lösung gefunden,...)

Das Problem liegt offenbar darin, wenn das Makro ein Tabellenblatt mit dem selben Namen eines bereits bestehenden Blattes erstellen soll.
Ich habe zum testen einfach mal den ersten Lieferanten doppelt (also in einer weiteren Zeile) eingetragen, und dann kam dieser Fehlercode (400) gleich beim ersten Lieferanten!  :19:

So weit so gut!

Jetzt ist nur mehr die Frage: Kann man das im Code irgendwie ergänzen? das man zb sagt:" Wenn ein Tabellenblatt erstellt wird, welches bereits den gleichen namen besitzt, dann schreib "_2" oder "_3" dazu?  Huh
Hallo,

zumindest der Anhang der _2 sollte in Verbindung mit der Funktion funktionieren
Code:
Sub Main()
Dim i As Long
Dim ws As Worksheet
Dim strAnhang As String

With Sheets(1)
For i = 3 To .Cells(Rows.Count, "A").End(xlUp).Row
    Set ws = Worksheets.Add(after:=Sheets(Sheets.Count))
    strAnhang = Left(.Cells(i, "C") & Chr(32) & .Cells(i, "D"), 31)
    If BlattExists(strAnhang) Then strAnhang = strAnhang & "_2"
    ws.Name = strAnhang
'    If BlattExists(ws.Name) Then ws.Name = ws.Name & "_2"
ActiveSheet.Hyperlinks.Add Anchor:=.Cells(i, 4), Address:="", SubAddress:= _
        "'" & ws.Name & "'!A1", TextToDisplay:= _
        ws.Name
Next i
End With
End Sub


Function BlattExists(BlattName As String) As Boolean
    On Error Resume Next
    BlattExists = Not ThisWorkbook.Worksheets(BlattName) Is Nothing
    On Error GoTo 0
End Function
Hallo Stefan,

das "zumindest deutet darauf hin, dass Du den Fehler 400 auch nicht reproduzieren konntest, trotzt doppelter Namen, ist das richtig.

Ich erhalte immer Fehler 1004, so wie Du.
Hallo Atilla,

ich konnte den Fehler 400 auch nicht reproduzieren. Das 'zumindest' bezog sich nur auf den Fehler wenn der Tabellenname bereits einmal existiert. Gib es das Tabellenblatt bereits zweimal (als Beispiel: Ferdinand Bernhofer GesmbH und Ferdinand Bernhofer GesmbH_2) läuft mein Code auch in einen Fehler.
Hallo!

So, nachdem nur 4 oder 5 Lieferanten doppelt waren, hab ich deren Lieferantennummer einfach manuell um ein _1 bzw _2 ergänzt.
Formel laufen lassen und alles wunderbar konvertiert!

VIELEN VIELEN DANK euch allen!!!! :15:
Seiten: 1 2