Supportnet Computer
Planet of Tech

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:

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 Sub


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
For i = 2 To Worksheets.Count

durch
For i = 6 To 26


Fü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
For i = 6 To 25


ist 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

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:

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

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:

k = Worksheets("Kundengesamt").Index
d = Worksheets("Daten").Index
For i = k To d


Gruß
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

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