Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

automatische Erstellung mehrerer Tabellenblätter
#11
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


.xlsm   Musterdatei 3.xlsm (Größe: 15,18 KB / Downloads: 13)
Antworten Top
#12
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#13
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!!!
Gruß Atilla
Antworten Top
#14
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:
Antworten Top
#15
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
Gruß Atilla
Antworten Top
#16
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
Antworten Top
#17
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
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#18
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.
Gruß Atilla
Antworten Top
#19
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.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#20
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:
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste