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
#1
Hallo liebes EXCEL-Forum!

Folgende Situation:
Ich habe Excel file ("Musterdatei Lieferanten URSPRUNG" im Anhang) in der jede Menge Daten drinn stehen (echte Datei hat über 200 Zeilen).  Dodgy
In den Spalten C und D stehen meine Warenlieferanten. C = Lieferantennummer, D = Lieferantenname.
In A bzw B stehen die Systemlieferanten. Das bedeutet, dass ich einen (System)Lieferanten habe, die in den Spalten A und B hinterlegt ist, der aber unterschiedliche Warenlieferanten haben kann.

Beispiel: Ich habe also mit Systemlieferant I (Zeilen 11 - 14) einen Vertrag, aber Warenlieferant I1 bis I4 (Zeilen 11 - 14) liefern mit die Waren.  :21:

Nun brauche ich zu jedem Warenlieferanten (Spalte C) ein eigenes Tabellenblatt, in dem ich dann manuell Informationen ablegen kann. (Lieferkonditionen, Preise etc.)

Da ich jedoch jede Menge verschiedener Lieferanten habe, hätte ich gerne:

1.) Ein Tabellenblatt pro Warenlieferant soll automatisch erstellt werden: Quelle: Spalte C  Beispiel: "500180"
2.) Das erstellte Tabellenblatt soll gleich nach dem Warenlieferanten benannt werden: Quelle C + D  Beispiel: "500180 - Warenlieferant A1"
3.) Wenn ich im ersten Tabellenblatt einen Warenlieferanten suche, und auf den dann klicke, soll dies gleich in das passende Tabellenblatt verlinkt werden.

Ich hänge euch ebenfalls eine zweite Excel file an "Musterdatei Lieferanten ZIEL", so sollte im besten Fall die ursprüngliche Datei nach dem konvertieren aussehen.  Blush

Das übersteigt meine rudimentären Excel Kenntnisse leider bei weitem :s Huh :22: , daher BITTE ICH UM EURE KOMPETENTE HILFE!  :05:

DANKE schonmal!


.xlsx   Musterdatei Lieferanten URSPRUNG.xlsx (Größe: 11,27 KB / Downloads: 5)

.xlsx   Musterdatei Lieferanten ZIEL.xlsx (Größe: 17,33 KB / Downloads: 3)
Antworten Top
#2
Hallo,

teste:


Code:
Sub Main
with sheets(1)
for i = 3 to .cells(rows.count, "A").end(xlup).row
    set WS = worksheets.add (after:=sheets(sheets.count))
    WS.name = .cells(i,"C") & chr(32) & .cells(i,"D")
next i
end with
End Sub


FF (viel Vergnügen)

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • alexander.liedauer
Antworten Top
#3
Hallo Alexander,

Auch wenn es sich blöd anhört, auf die Bitte:
Zitat:...zu jedem Warenlieferanten (Spalte C) ein eigenes Tabellenblatt...
...BITTE ICH UM EURE KOMPETENTE HILFE!  ....

Die kompetenteste Hilfe ist die Aufforderung: Machs nicht!

Für Tabellenkalkulationen gilt dir Regel : Gleichartige Daten gehören in eine und nur eine Tabelle.

Wenn du die Daten der verschiedenen Warenlieferanten nur aufschreiben und lesen willst, benötigst du kein Excel, dann kannst du auch Papyrusblätter nutzen.
Wenn du die Daten aber später über Formeln oder Programme auswerten willst, ist die Datenhaltung in einer Tabelle sehr viel besser.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
OH! Also erstmals DANKE für die rasche Antwort!
und dann DANKE für das perfekte Ergebnis! GENAU SO WOLLT ICHS!


DANKE!!!!!!!!  :15:  :100: :18:
Antworten Top
#5
Naja, also ich hinterfrage an sich nicht WIESO ich das machen soll. Habe lediglich den "Auftrag" bekommen DAS ich es machen soll.
Geht aber wohl eher um Daten bzw Informationssammlung und nicht um deren Auswertung. Dodgy


Eine Frage noch: Die Verlinkung der einzelnen Lieferanten aus Tabellenblatt 1 zu den jeweiligen Tabellenblättern "fehlt" noch.
Kann man das in den VB Code noch einpflegen?  Huh

Danke!
Antworten Top
#6
Hallo,

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

vor "next i " einfügen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • alexander.liedauer
Antworten Top
#7
Wink 
Guten Morgen und VIELEN VIELEN DANK!!!!!!!

Sieht schon SEHR gut aus!
Ich denke, das war die Lösung.

DANKE an alle für die rasche und tolle Hilfe!!  :18: :18: :18:
Antworten Top
#8
so,... zu früh gefreut...  :22:

In der Beispieldatei die ich euch gesendet habe funktioniert euer Code perfekt!
Wenn ich den Code allerdings in meine echte Datei kopiere, dann läuft er einige Zeilen gut dahin und dann bekomme ich plötzlich den Fehlercode "400".  Huh

Keine Ahnung worans liegt. Zuerst dachte ich dass es eventuell an Sonderzeichen wie . , " - liegt.
Aber das dürfte es nicht sein. Auch mit der Länge der Namen hat es nichts zu tun. (hab diese mal auf 10 Zeichen gekürzt)

Kann mir hier jemand weiter helfen? Huh
Hab die Originaldatei (mit abgeänderten "Namen") angehängt. (Musterdatei 2)  Undecided
Folgenden Code hab ich im VB abgespielt:


Sub Main
with sheets(1)
for i = 3 to .cells(rows.count, "A").end(xlup).row
    set WS = worksheets.add (after:=sheets(sheets.count))
    WS.name = .cells(i,"C") & chr(32) & .cells(i,"D")

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

next i
end with
End Sub



Ich denke jedoch das der Fehler im ersten Teil wo liegen muss  Undecided

Sub Main
with sheets(1)
for i = 3 to .cells(rows.count, "A").end(xlup).row
    set WS = worksheets.add (after:=sheets(sheets.count))
    WS.name = .cells(i,"C") & chr(32) & .cells(i,"D")


next i
end with
End Sub


DANKE!


.xlsx   Musterdatei 2.xlsx (Größe: 18,48 KB / Downloads: 6)
Antworten Top
#9
Hallo,

bei mir läuft er ohne Fehlermeldung durch. Welche Codezeile ist markiert, wenn die Fehlermeldung auftaucht? Fahre mal mit der Maus über WS.Name, was wird dir da angezeigt? Welche Wert hat die Variable i zu dem Zeitpunkt?
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#10
Hi,

(09.02.2017, 07:22)alexander.liedauer schrieb: Kann mir hier jemand weiter helfen? Huh
Hab die Originaldatei (mit abgeänderten "Namen") angehängt. (Musterdatei 2)  Undecided

auch bei mir mit Excel 2013 funktioniert der Code mit der Datei 2 einwandfrei und es werden 290 Blätter angelegt.
Antworten Top


Gehe zu:


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