Supportnet / Forum / Tabellenkalkulation
Wer kann helfen?? VBA Bätter durchsuchen und Kopieren
Frage
Hallo erstmal,
Ich stehe vor einm großen VBA Hinderniss und habe nichtmal einen kleinsten Ansatz / Idee (Ahnung) :o(
Ich habe eine Mitarbeitertabelle - Kundentabelle.
Jede Mitarbeiternummer entspricht einem Blattnamen.
Auf jedem Blatt werden jedem Mitarbeiter seine Kunden ab Zeile 26 bis Spalte Ab
(bis maximal Zeile 300) über Userform in die tabelle eingetragen und abgespeichert.
Da ich aber gern ein Blatt Kundengesamt haben möchte müsste er alle Tabellenblätter mit Nummern (gibt ja noch andere Blätter) durchsuchen und mir dann in das Kundengesamtblatt kopieren.
Wer hat dafür eine Idee oder einen Lösungsansatz?
Tappe nämlich Total im Dunklen...
Vielen Dank für eure Lösungsvorschläge....
MfG Schnappi
Antwort 1 von schnallgonz
Hallo,
erstmal ein Vorschlag zum Datensaugen aus allen Blättern:
Um jetzt nur aus den Mitarbeiterblättern zu saugen, schlage ich vor, die Mitarbeiterblätter an den Anfang oder das Ende zu sortieren. Dann saugt man nur aus der entsprechenden Blattzahl.
Bsp.:
Wenn Du 20 Mitarbeiterblätter hast, die am Ende stehen und davor 5 Blätter mit sonstigem Kram, dann läßt man die Kopierschleife für die Blätter 6 bis 26 laufen.
Dann ersetzt Du
durch
Fügst Du später Blätter ein, mußt Du den Code entsprechend anpassen.
MfG
schnallgonz
erstmal ein Vorschlag zum Datensaugen aus allen Blättern:
Sub DatenSaugen()
´kopiert Bereich A26:AB300 aus allen Blättern nach Kundengesamt untereinander
Dim Zeile As Long
Dim i As Integer
Application.ScreenUpdating = False
For i = 2 To Worksheets.Count
Zeile = Sheets("Kundengesamt"). _
Range("A65536").End(xlUp).Offset(1, 0).Row
Worksheets(i).Range("A26:AB300").Copy
Sheets("Kundengesamt").Cells(Zeile, 1).PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Next i
Application.ScreenUpdating = True
End SubUm jetzt nur aus den Mitarbeiterblättern zu saugen, schlage ich vor, die Mitarbeiterblätter an den Anfang oder das Ende zu sortieren. Dann saugt man nur aus der entsprechenden Blattzahl.
Bsp.:
Wenn Du 20 Mitarbeiterblätter hast, die am Ende stehen und davor 5 Blätter mit sonstigem Kram, dann läßt man die Kopierschleife für die Blätter 6 bis 26 laufen.
Dann ersetzt Du
For i = 2 To Worksheets.Count durch
For i = 6 To 26Fügst Du später Blätter ein, mußt Du den Code entsprechend anpassen.
MfG
schnallgonz
Antwort 2 von schnallgonz
Äh,
20 + 5 = 25, oder?
also
ist schon spät
Gruß
schnallgonz
20 + 5 = 25, oder?
also
For i = 6 To 25ist schon spät
Gruß
schnallgonz
Antwort 3 von Fischi40
Guten Abend schnallgonz.
Vielen Vielen Dank für deine Hilfe ....
Das mit dem i = 6 to 25 -- Kann man das auch anders schreiben? In der Tabelle werden immer mal neue Mitarbeiter angelegt und da müsste ich immer das Macro anpassen.
Gibts irgendwas wo man einen Bereich definiert.
Zb. nehme alle Tabellen nach Kundengesamt bis zur Tabelle Daten (in dem Bereich werden immer die Mitarbeitertabellen eingefügt). ???
Vielen Dank nochmal und schönen Abend...
MfG Fischi
Vielen Vielen Dank für deine Hilfe ....
Das mit dem i = 6 to 25 -- Kann man das auch anders schreiben? In der Tabelle werden immer mal neue Mitarbeiter angelegt und da müsste ich immer das Macro anpassen.
Gibts irgendwas wo man einen Bereich definiert.
Zb. nehme alle Tabellen nach Kundengesamt bis zur Tabelle Daten (in dem Bereich werden immer die Mitarbeitertabellen eingefügt). ???
Vielen Dank nochmal und schönen Abend...
MfG Fischi
Antwort 4 von schnallgonz
Moin,
wenn das Blatt "Daten" immer das letzte Blatt ist , kannst Du von "Kundendaten" bis zum letzten Blatt - 1 saugen lassen:
Damit ist egal, wieviel Mitarbeiterblätter zwischen Kundengesamt und Daten kommen.
An den Anfang des Listing fügst Du dann noch ein:
Ich überlege noch, wie man den TabIndex für irgendein Blatt bestimmt, fällt mir spontan nicht ein.
Also Blattindex für "Kundengesamt", dann kannst Du auch vor Kundengesamt munter Blätter einfügen.
Wenn´s mir einfällt, melde ich mich nochmal.
MfG
schnallgonz
wenn das Blatt "Daten" immer das letzte Blatt ist , kannst Du von "Kundendaten" bis zum letzten Blatt - 1 saugen lassen:
e = Worksheets.Count
d = e - 1
For i = 6 To d
Damit ist egal, wieviel Mitarbeiterblätter zwischen Kundengesamt und Daten kommen.
An den Anfang des Listing fügst Du dann noch ein:
Dim e As Integer
Dim d As Integer
Ich überlege noch, wie man den TabIndex für irgendein Blatt bestimmt, fällt mir spontan nicht ein.
Also Blattindex für "Kundengesamt", dann kannst Du auch vor Kundengesamt munter Blätter einfügen.
Wenn´s mir einfällt, melde ich mich nochmal.
MfG
schnallgonz
Antwort 5 von Fischi40
Moin schnallgonz ...
Echt super das hilft mir wirklich weiter...
Vielen Dank für deine Tips.
Und wenn dirs einfällt einfach posten werd immer mal schauen ob was datzgekommen ist.
Danke und bis später...
MfG Fischi
Echt super das hilft mir wirklich weiter...
Vielen Dank für deine Tips.
Und wenn dirs einfällt einfach posten werd immer mal schauen ob was datzgekommen ist.
Danke und bis später...
MfG Fischi
Antwort 6 von schnallgonz
Hi Fischi,
vieleicht hast Du´s schon gesehen
https://supportnet.de/threads/998198
sowas macht mich fertig.
Wie wenn man einen Begriff oder Namen sucht und einem das eigentlich auf der Zunge liegt.
Aber jetzt hammers ja.
Heißt für Dich:
Gruß
schnallgonz
vieleicht hast Du´s schon gesehen
https://supportnet.de/threads/998198
sowas macht mich fertig.
Wie wenn man einen Begriff oder Namen sucht und einem das eigentlich auf der Zunge liegt.
Aber jetzt hammers ja.
Heißt für Dich:
k = Worksheets("Kundengesamt").Index
d = Worksheets("Daten").Index
For i = k To dGruß
schnallgonz
Antwort 7 von Fischi40
Hallo schnallgonz,
ja habe den Tread gelesen (konnte damit aber nicht so viel anfangen) du hast es einfach besser erklärt oder anders... Praxisbezogen auf mein Beispiel besser rübergebracht.
Ich danke dir nochmal
Gutes Nächtle....
MfG Fischi
ja habe den Tread gelesen (konnte damit aber nicht so viel anfangen) du hast es einfach besser erklärt oder anders... Praxisbezogen auf mein Beispiel besser rübergebracht.
Ich danke dir nochmal
Gutes Nächtle....
MfG Fischi
Antwort 8 von schnallgonz
Hi Fischi,
Danke für die Rückmeldung.
Die Nacht wir kurz, um 7:00 kommt bestimmt mein Jüngster mit der Meldung:
Papa, ich habe Hunger...
Gruß
schnallgonz
Danke für die Rückmeldung.
Die Nacht wir kurz, um 7:00 kommt bestimmt mein Jüngster mit der Meldung:
Papa, ich habe Hunger...
Gruß
schnallgonz
Ich möchte kostenlos eine Frage an die Mitglieder stellen:
Ähnliche Themen:
- hallo zusammen , ich bitte unbedingt hilfe ich möchte in excel über VBA AUS EINEM DATENBLATT werte in anderen datenblätten bzw. Tabellenblatten automa
- Steuerelemente per VBA markieren
- VBA Werte finden uns kopieren ???
- windows: ausführen -> durchsuchen... ändern / anpassen
- VBA - Bereich kopieren, für dessen 1. Zelle ein Name definiert wurde

