Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
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
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wert aus Tabelle A in Tabelle B übergeben

Wert aus Tabelle A in Tabelle B übergeben
15.05.2008 16:02:00
Heinrich
Hallo VBA-Freunde,
Ich habe folgendes Problem:
Ich habe eine Tabelle B, in welcher ich in Auszügen Zeilen aus Tabelle A darstellen lasse. In einer Spalte "Status" kann ich den jeweiligen Status der Bearbeitung (offen, in Bearbeitung, abgeschlossen) festhalten. Nun möchte ich, vor dem Speichern der Datei, die Werte der Spalte "Status" aus Tabelle B in die gleichnamige Spalte in Tabelle A übergeben und zwar in die jeweils passende Zeile (definiert anhand eines übereinstimmenden Indexes (z.B. B1.1.2) aus Spalte A beider Tabellen).
Vor dem Speichern sollen also alle Werte und Formatierungen aus Spalte "Status" in Tabelle B mittels VBA in die "Spalte" Status in Tabelle A übernommen werden, an die Stelle, an der der Zellwert aus Spalte B in Tabelle A und B identisch ist.
War das einigermaßen verständlich ausgedrückt?
Wie kann ich das mit VBA tun?
Vielen Dank im Voraus!
Heinrich

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ich gehe mal davon aus, dass du weißt...
15.05.2008 22:16:29
aus,
...wie das mit Formeln ginge, Heinrich!
Mit VBA kann's für dich als Anfänger schon recht kompliziert wdn, je nach dem wie du das lösen willst. Dabei scheidet eine Möglichkeit mit Sicherheit aus - der Makrorecorder! Allerdings könntest du ihn nutzen, um erst einmal den äußeren Rahmen für dein Makro zu bekommen: Anschalten - eine Eintragung manuell vornehmen - Ausschalten
Anschließend musst du um diese Übernahmeaktion herum einen Wiederholungszyklus konstruieren, der...
1. die Indexspalte von TabA zeilenweise abfragt (mit Laufindex i) und in TabB mit der dortigen Indexspalte vergleicht und dabei einen 2.Laufindex j erhöht,
2. mit dem ermittelten Laufindex j den entsprechenden Wert aus Spalte "Status" von TabB liest und...
3. diesen Wert dann in TabA in Spalte "Status" unter Laufindex i einträgt.
Klassisch kann man das mit 2 ineinander "geschachtelten" For...Next-Zyklen (oft auch "Schleifen" genannt) lösen. Es gibt allerdings auch noch andere Möglichkeiten...
Am Makroanfang solltest du alle zur Anwendung kommenden Variablen deklarieren (mit Dim), also auch die 4 Spaltenbereiche festlegen (im Bsp IdxA, IdxB, StatA, StatB As Range) und die beiden Laufindizes als Long vereinbaren. Den 4 Bereichsvariablen müssen dann natürlich noch die entsprechenden Spaltenbereiche mit Set name = ... zugewiesen wdn
Der "Doppelzyklus" könnte dann so aussehen...

For i = 1 To IdxA.Cells.Count
For j = 1 To IdxB.Cells.Count
If IdxA.Cells(i) = IdxB.Cells(j) Then
StatA.Cells(i) = StatB.Cells(j)
Exit For
End If
Next j
Next i


Der rot geschriebenen Anweisung entspricht auch die vom Makrorecorder aufgezeichnete Datenübernahme, obwohl die sicher etwas anders, nämlich mit direktem Bereichsbezug, aussieht.
Das Exit For sorgt dafür, dass der innere Zyklus nicht unnötig weiter durchlaufen wird, wenn der Vgl erfolgreich war.
Gruß Luc :-?
PS: Falls du damit ein Performance-Problem haben solltest, müsstest du statt des inneren Zyklus mit den Methoden .Find, .Copy und .Paste arbeiten. Wenn du das Ganze auch automatisieren willst, solltest du dir das ArbeitsmappenEreignis Workbook_BeforeSave ansehen...

Anzeige
AW: Ich gehe mal davon aus, dass du weißt...
19.05.2008 11:04:00
aus,
Servus Luc,
vielen Dank für die Antwort. In weiten Teilen habe ich Deine Lösung umsetzen können.
Folgendes Problem stellt sich aber noch:
Durch

StatA.Cells(i) = StatB.Cells(j)

übernehme ich nur die Werte der Zellen, nicht jedoch die Formate. Die sind allerdings wichtig. Kannst Du mir helfen?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige