Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Automatisches kopieren einer Tabelle im selben Worksheet

Automatisches kopieren einer Tabelle im selben Worksheet
30.10.2023 15:38:23
Lukas
Guten Tag,

ich bin leider noch recht frisch in Sachen VBA und suche deshalb Hilfe.

Folgendes möchte ich etablieren:

Ich habe ein Worksheet mit der Bezeichnung A.

Im Bereich A3:BG9 liegt eine Tabelle, teilweise mit Formeln hinterlegt und vollständig eingerahmt. Diese Tabelle ist eine Blanco Vorlage, die nicht verändert wird.

Die gleiche Tabelle inkl. Formeln und Rahmen kopiere ich nun mit Abstand von einer Zeile in den Bereich A11:BG17. In diese Tabelle sollen teilweise Daten eingetragen werden. Was ich nun möchte ist: wenn ich in die Zelle A11 etwas eintrage, soll wiederum im gleichen Abstand nach unten in den Bereich A19:BG25 die Blanco Tabelle von oben (A3:BG9) inkl. der dort hinterlegten Formeln und dem Rahmen automatisch reinkopiert werden.

Wie kann ich dies mit VBA bewerkstelligen?

Wozu: Ich muss täglich mehrfach Daten erfassen und möchte die Blanco Tabelle nicht jedes Mal händisch in die Excel kopieren.

Vielen Dank für eure Hilfe!



11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatisches kopieren einer Tabelle im selben Worksheet
30.10.2023 16:02:14
EtoPHG
Hallo Lukas,

Warum willst Du das Ganze kompliziert, wartungsintensiv und fehleranfällig mit VBA lösen?

Speichere Dein Arbeitsmappe als Vorlage (Template) MeineVorlage.XLTX ab.
Dann öffnest Du eine neue Arbeitsmappe mit dieser Vorlage und Du kann loslegen mit Daten eintragen!

Gruss Hansueli
AW: Automatisches kopieren einer Tabelle im selben Worksheet
30.10.2023 16:02:27
daniel
Hi

Würde ich so machen

1. Wenn du die erste Kopie angelegt hast, schreibe die Adresse der Zelle, bei deren Änderung eine neue Kopie angelegt werden soll, in eine freie Zelle.
Also in BJ1 kommt der Text "A11"

2. Erstelle jetzt für das Blatt das Change -Eventmakro mit folgendem Code:
With Range("BJ1")

If Target.Address(0, 0) = .value then
Application.enableEvents = false
Range("A3:BG9").Copy destination:=Range(.value).Offset(8, 0)
.value = Range(.value).Offset(8, 0).address(0, 0)
Application.enableevents = true
End if
End with


Gruß Daniel
Anzeige
AW: Automatisches kopieren einer Tabelle im selben Worksheet
30.10.2023 18:43:53
Lukas
Hallo Daniel,

vielen Dank für den Quelltext, den ich gerade ausprobiert habe. Leider tut sich jedoch nicht viel, ich mache wohl etwas falsch.

Vielleicht kannst du mir nochmal aushelfen. Ich musste den Quelltext etwas anpassen, weil sich Änderungen ergeben haben. Hier meine Version:

With Range("B2")

If Target.Address(0, 0) = .Value Then
Application.EnableEvents = False
Range("A4:BZ9").Copy Destination:=Range(.Value).Offset(7, 0)
.Value = Range(.Value).Offset(7, 0).Address(0, 0)
Application.EnableEvents = True
End If
End With


  • Zeile 1: Geändert habe ich: Range: B2 (dort Verweis auf B11)

  • Zeilen 4 + 5:Offset 7, nicht 8, weil ich noch eine Zeile raus hab

  • Zeile 4: Range: bis BZ9, da die Tabelle jetzt etwas weiter geht


  • Die Blanco Tabelle und die erste danach müssen unbedingt stehenbleiben. Wenn ich dann also was in B11 eintrage, sollte die nächste Tabelle erscheinen und zwar in A18:BZ24

    Ich lade mal ein Bild bei einem Hoster hoch, dann versteht man besser was ich meine. Hier der Link dazu:

    https://i.postimg.cc/wxVZG8Bt/Bild.jpg
    Anzeige
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    30.10.2023 19:16:03
    daniel
    Hi
    Hast du das Change-Eventmakro für das Tabellenblatt erstellt und den Code dort eingefügt?
    Am besten mal Datei hochladen, sonst kann ich dir nicht sagen, warum es bei dir nicht geht.

    Was du auch noch einbauen musst ist, dass dein Einfügeziel und die Zelle, die das ganze auslösen soll, bei jetzt nicht mehr die selbe Zelle ist, auslösezelle ist in Spalte B und Einfügeziel in Spalte A.

    Gruß Daniel
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    30.10.2023 19:32:22
    Lukas
    TOP, du bist der Beste!!!

    Hab das Worksheet / Change vergessen.

    Jetzt hats geklappt! Es in Spalte A zu justieren war einfach: Offset(7, -1) statt Offset(7, 0)

    Das Worksheet wird am Jahresende vermutlich über 1000 dieser Tabellen haben. Nun noch ne Frage: Wenn ich eine neue Tabelle durch Eingabe in ein Feld auslöse, ist der Marker ja dann in der nächsten Tabelle. Rein der Interesse halber: Bekomme ich den Marker manuell irgendwie wieder eine Tabelle weiter nach oben?

    Anzeige
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    30.10.2023 19:34:26
    Lukas
    Habs grad selbst gemerkt: Der Marker wird ja in B2 angezeigt :-)

    Top, danke nochmal für deine Hilfe!!!
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    30.10.2023 21:08:47
    daniel
    Der Text in B2 kennzeichnet immer die Zelle, die das Kopieren der Tabelle auslöst.
    Wo die Tabelle eingefügt wird, legt das Offset in Abhängigkeit von dieser Zelle fest
    Gruß Daniel
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    30.10.2023 21:21:28
    daniel
    Hattest du die Frage gestellt, weil du gelegentlich mal Tabellen löschst und dann der Marker nach oben verschoben werden muss?

    Das könnte man lösen, in dem man den Marker durch einen benannte Zelle ersetzt, diese verschiebt sich beim Löschen und einfügen automatisch mit,so dass auch nach solchen Aktionen immer die richtige Zelle auslöst, ohne dass du das anpassen musst.

    Gruß Daniel
    Anzeige
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    31.10.2023 07:48:08
    Lukas
    Hallo Daniel,

    das mit der automatischen Verschiebung des Markers wäre eine gute Sache.

    Wie lässt sich das VBA technisch bewerkstelligen?


    Und noch eine weitere Frage:

    Ich habe 3 Worksheets mit diesen Tabellen. Hintergrund ist, dass ich Waren auf 3 verschiedenen Onlineplattformen verkaufe (z. B. Amazon, Ebay und Onlineshop).

    Jetzt ist es so, dass ich meine verkauften Waren mit DHL, Hermes und GLS versende, je nachdem was aufgrund der Größe und Gewicht am günstigsten ist. Ich habe also in jeder der Tabellen, die je einen Verkauf erfassen ein Dropdown Menü erstellt, bei dem man DHL, Hermes und GLS auswählen kann.

    In der Praxis kommt es vor, dass ich an einem Tag mal nur einen Versanddienstleister anfahre, mal zwei, mal alle drei. Daraus ergibt sich eine unterschiedliche Kilometerzahl, die ich steuerlich absetzen kann.

    Es ergeben sich je nach Fahrkonstellation folgende Distanzen:
    Fahre ich zu DHL: 5 km
    Fahre ich zu Hermes: 6 km
    Fahre ich zu GLS: 7 km
    Fahre ich zu DHL + Hermes: 13 km
    Fahre ich zu DHL + GLS: 15 km
    Fahre ich zu Hermes + GLS: 17 km
    Fahre ich zu DHL + Hermes + GLS: 20 km

    Nun möchte ich ein extra Worksheet „Fahrten“ erstellen, auf dem die Fahrzeiten in Abhängigkeit des Datums automatisch zusammengerechnet werden. Ich würde einfach alle Tage eines Jahres untereinander in Zellen schreiben und nebendran soll dann das Makro für die Berechnung der Kilometer rein.

    Das Makro muss also folgendes tun:

  • Prüfen, ob in Worksheet Amazon / Ebay / Onlineshop ein bestimmtes Datum in einer der Tabellen hinterlegt ist. Wenn ja, muss es für jedes separate Datum zu dem jeweiligen Dropdown Menü gehen und den Wert darin auslesen (je nach Wahl: DHL / Hermes / GLS)


  • Die Dropdown Werte aller drei Worksheets miteinander kombinieren und den richtigen Rückgabewert an Kilometern eintragen.


  • Geht das irgendwie?
    Anzeige
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    31.10.2023 10:01:54
    Pierre
    Hallo Lukas,

    das geht sicher, aber ich würde dir empfehlen, dazu einen neuen Beitrag zu erstellen.

    Gruß Pierre
    AW: Automatisches kopieren einer Tabelle im selben Worksheet
    31.10.2023 10:49:49
    daniel
    hi

    das mit Namen als Marker müsste so funktionieren:

    With Range("AuslöseZelle")
    
    If Target.Address = .Address Then
    Application.EnableEvents = False
    Range("A4:BZ9").Copy Destination:=.Offset(7, 0)
    Range(.Value).Offset(7, 0).Name = "AuslöseZelle"
    Application.EnableEvents = True
    End If
    End With


    beim erstenmal musst du den Namen "Auslösezelle" noch von Hand einrichten.
    entweder über den Namensmanager, oder am einfachsten so:
    du markierst die Zelle, über die das nächste Kopieren ausgelöst werden soll und klickst dann ins Namensfeld (oben links vor der Bearbeitungszeile) und gibst dort den Namenstext ein ("AuslöseZelle")


    für die zweite Frage bitte neuen Beitrag erstellen.

    Gruß Daniel
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige