Kopieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Kopieren
von: Norbert
Geschrieben am: 17.07.2015 11:43:16

Hallo Spezialisten
Es geht um 2 Tabellenblätter
im Tabellenblatt Daten habe ich diverse Datensätze (bis ca. Zeile 250 und Spalte W)
Im Tabellenblatt Formular (siehe Beispiel) habe ich ein Formular gestaltet.
Ist es nun möglich, dass es mir pro Datensatz das ganze Formular im gleichen Tabellenblatt in einem Zuge nach unten kopiert?
Bezeichnung "Text" ist immer gleich benannt
Bezeichnung "Variabel" hole ich den jeweiligen Wert mittels sverweis vom Datenblatt.
Geht dies mit einem VBA-Script?
Danke für die Hilfe
https://www.herber.de/bbs/user/98895.xlsx

Bild

Betrifft: AW: Kopieren
von: Klexy
Geschrieben am: 17.07.2015 18:07:25
Im Tabellenblatt Daten gibt es weder diverse noch sonstige Datensätze.

Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 19.07.2015 07:41:22
Hallo Klexy
im Tabellenblatt "Daten" befindet sich der "Schlüssel" in der Spalte Ä, welches ein 8-Stellige Nummer ist.
Den Vorgang für das Script stelle ich mir folgendermassen vor:
1. hole den 1. Wert aus Daten, A1
2. kopieren diesen im 1. Formular im Zelle Variabel (mit Schlüssel gekennzeichnet)
3. Kopiere das komplett eingerahmte Formular
4. füge unterhalb nach einer Leerzeile den Inhalt ein (mit Formel, Formatierung)
5. in diesem kopierten 2. Formular den bestehenden Schlüsselwert ersetzen durch den nächsten Wert aus Daten A2
6. dann Wiederholung der Prozedur, solange bis der letzte Wert aus Daten, Spalte A erreicht ist
Am Ende sollten alle Schlüsselwerte in einem eigen Formular ersichtlich sein - wie vorherige Beschreibung, Schlüsselwerte können von A1 - A250 gefüllt sein.
Helfen diese Angaben?
Gruss Norbert

Bild

Betrifft: AW: Kopieren
von: Michael
Geschrieben am: 19.07.2015 17:33:52
Hi zusammen,
ich schließe mich Klexy an: das Blatt "Daten" ist schlicht leer!
Die grundsätzliche Frage ist, wozu das überhaupt gut sein soll. Wenn ich das "datenbankmäßig" betrachte, braucht es nämlich nur eine Liste der Daten (wie theoretisch in "Daten" vorhanden) und *ein* Formular, aus dem man diverse Funktionalität generiert, sei es z.B. für die Eingabe von Daten oder eben auch einen Ausdruck - der kann dann nämlich ähnlich wie ein Word-Serienbrief gestaltet werden.
Also, was möchtest Du damit machen?
In Deinem Beispiel sind übrigens *zwei* Leerzeilen zwischen den beiden "Formularen".
Für so etwas nimmt man sinnvollerweise INDEX. Ich habe Deine Tabelle etwas geändert: das bisherige Blatt Formular heißt jetzt Formular-Vorlage: das wird dazu verwendet, alle Formeln einzugeben: orientiere Dich am Beispiel in B4. Der Index wird über den Wert in Q4 gesteuert; steht hier eine 1, wird der erste Wert angezeigt, steht da eine 2, der zweite usw. bis 250. Das (zu erstellende) Makro schreibt dann hier die jeweilige Zahl rein, von 1 bis [vorhandene Zeilen] und kopiert aus der Formular-Vorlage "weg" (also etwa in "Formular-Ausgabe") bzw. druckt...
Deine "variablen" Felder mußt Du halt entsprechend verINDEXen. Vielleicht erstellst Du für uns mal 5 Zeilen & Spalten Spieldaten und verformelst sie, dann können wir uns in VBA austoben.
Die Datei: https://www.herber.de/bbs/user/98924.xlsx
Schöne Grüße,
Michael

Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 20.07.2015 06:49:12
Hallo Michael
siehe meine Folgenachricht vom 17.07.2015
für mein Vorhaben ist lediglich ein Wert aus Daten - Spalte A relevant. Die restlichen Daten im Formular hole ich mit sverweis rüber, oder es sind zum Teil Berechnungen im im Formular selber. Die hinterlegten Formeln bleiben aber immer gleich. Beispiel für den Schlüsselwert ist: 10054187
Danke vorab
Gruss Norbert

Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 20.07.2015 09:22:40
Hallo Michael
hier das file mit den bestückten Daten
Gruss Norbert
https://www.herber.de/bbs/user/98936.xlsx

Bild

Betrifft: AW: Kopieren
von: Klexy
Geschrieben am: 20.07.2015 10:58:17
So ist eine Musterdatei vorbildlich. Ich schau es mir später an.

Bild

Betrifft: AW: Kopieren
von: Klexy
Geschrieben am: 20.07.2015 17:24:08
So sollte es gehen.
Ich hab alle Angaben als Variablen angelegt, damit du sie leicht ändern kannst, wenn sich das Formular oder die Blattnamen oder was auch immer ändern sollten.

Sub Formular_fuer_jeden_Datensatz_kopieren()
Dim Quellblatt As Worksheet, Zielblatt As Worksheet
    Set Quellblatt = Worksheets("Daten")
    Set Zielblatt = Worksheets("Formular-Vorlage")
Dim Höhe As Integer, Breite As Integer, Abstand As Integer
    Höhe = 30 ' Höhe des Formulars
    Breite = 12 ' Breite des Formulars
    Abstand = 2 ' Abstand zwischen 2 Formularen
    
Dim Formular As Range, Schlüssel As Double, i As Integer, Schlüsselzelle As Range
    Set Formular = Zielblatt.Range(Cells(1, 1), Cells(Höhe, Breite))
    Formular.Select ' nur zur Verdeutlichung
     
For i = 3 To Quellblatt.UsedRange.Rows.Count
    Schlüssel = Quellblatt.Cells(i, 1).Value
    
    Formular.Copy Formular.Offset((i - 2) * (Höhe + Abstand), 0)
        Formular.Offset((i - 2) * (Höhe + Abstand), 0).Select ' nur zur Verdeutlichung
    Set Schlüsselzelle = Formular.Offset((i - 2) * (Höhe + Abstand), 0).Cells(1).Offset(3, 1)
        Schlüsselzelle.Select ' nur zur Verdeutlichung
    Schlüsselzelle = Schlüssel
Next i
MsgBox "Fertig" ' damit man weiß, wann es zu Ende geruckelt hat
End Sub


Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 20.07.2015 21:15:11
Hallo Klexy
funktioniert, sensationell kann ich da nur sagen.
Besten Dank für deine hilfreiche Lösung
Grüsse Norbert

Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 21.07.2015 07:00:46
Hallo Klexy
eine Frage noch - um den Komfort entgültig zu haben, wäre schön, wenn ich die Anzahl der zu übernehmenden Datensätze noch angeben könnte (Bsp. von A5:A62)
Ist das auch noch möglich?
Danke Bestens
Gruss norbert

Bild

Betrifft: AW: Kopieren
von: Klexy
Geschrieben am: 21.07.2015 17:18:23
Diese Zeile

For i = 3 To Quellblatt.UsedRange.Rows.Count

´steuert, dass es von Zeile 3 bis zur letzten verwendeten Zeile (UsedRange.Rows.Count) geht.
Mach dir weiter oben noch eine oder zwei Variablen, mit denen du die Werte für i steuern kannst.
Am besten indem du die Werte in zwei Zellen schreibst und von dort übernimmst.
so z.B.:
Dim ersteZeile As Integer
ersteZeile = Range("P1").Value

Bild

Betrifft: AW: Kopieren
von: Norbert
Geschrieben am: 21.07.2015 22:14:44
Hallo Klexy
habs hingekriegt
danke für den Hinweis
Gruss Norbert

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Kopieren"