Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
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

Speichern mit indirekter Zelladressierung

Speichern mit indirekter Zelladressierung
20.03.2019 15:17:16
Gert
Hallo Forum,
ich möchte aus einer Excel Tabelle "A" in eine andere Excel Tabelle "B" Daten "Übernehmen".
In Tabelle "A" ist gegeben:
Zelle A1 mit dem Wert 10 (für die Zeilennummer der Zelle in Tabelle "B")
Zelle B1 mit dem Wert B (für die Spalte der Zelle in Tabelle "B")
und der Wert, der übertragen werden soll in C1
Ich suche nach der Erklärung, wie sich ein Makro in Tabelle "A" den Wert aus C1 nimmt und ihn in Tabelle "B" indirekt in die Zelle schreibt, deren Name sich aus den Werten der Zellen B1 und A1 aus Tabellenblatt "A" ergibt.
Das Auslesen über den Befehl Indirekt (ohne Makro) funktioniert prima; aber wie ist der umgekehrte Weg und dann auch noch per Makro?
Ich freue mich auf Antworten!
Herzlichen Dank im Voraus
Gert

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern mit indirekter Zelladressierung
20.03.2019 15:40:12
Werner
Hallo Gert,
so:
Public Sub aaa()
With Worksheets("A")
Worksheets("B").Range(.Range("B1") & .Range("A1")) = .Range("C1")
End With
End Sub
Gruß Werner
Frage
20.03.2019 15:41:46
Bernd
Servus Gert,
sind beide Tabellen in einer Datei, oder sind es 2 unterschiedliche Dateien?
Grüße, Bernd
AW: Frage
20.03.2019 16:14:32
Gert
Hallo Bernd,
ich bin immer wieder erstaunt, wie schnell sich nette Menschen hier um Fragen kümmern! Einfach toll.
Die beiden Tabellen gehören zu unterschiedlichen Excel-Dateien... und meine Frage war nicht präzise genug...die Daten aus Tabelle "A" müssen aus einem bestimmten Blatt der Datei "A" in ein bestimmtes Tabellenblatt der der Tabelle "B" abgelegt werden...
Also etwas komplizierter in der Pfadbeschreibung...
Liebe Grüße und Danke!!!
Gert
Anzeige
AW: Frage
21.03.2019 10:03:26
Bernd
Servus Gert,
teste mal:

Sub test()
Dim wbA As Workbook
Dim wbB As Workbook
Dim strwbBName As String
Dim rng As String
Set wbA = ThisWorkbook
strwbBName = Application.GetOpenFilename(, , , , False)
Set wbB = Workbooks.Open(strwbBName)
rng = wbB.Sheets(1).Range(wbA.Sheets(1).Range("B1").Value & wbA.Sheets(1).Range("A1").Value). _
Address
wbB.Sheets(1).Range(rng).Value = wbA.Sheets(1).Range("C1").Value
wbB.Close True
Set wbB = Nothing
Set wbA = Nothing
End Sub
Grüße, Bernd
AW: Frage
21.03.2019 13:29:09
Gert
Lieber Bernd,
ganz herzlichen Dank für Deine Mühe.
Sorry, aber ich bin kein wirklicher "Makro"-Profi.
Ich habe in einer leeren excel Tabelle ein Makro "Test" aufgezeichnet; den Inhalt gelöscht und Deinen Vorschlag hineinkopiert.
Eine weitere leere excel Datei "B" auf dem Desktop erstellt.
Wenn ich das Makro starte werde ich gefragt, welche Datei geöffnet werden soll.
Dann selektiere ich die Tabelle "B.xlsx" und der Wert wird dann in Milisekunden in "B.xlsx" gespeichert.
Also: es funktioniert.
In der realen Welt hat meine Tabelle "B.xlsx" den Namen "Kunden.slsm" und die Werte müssen in das Tabellenblatt "Kundendaten" geschrieben werden.
ich gehe davon aus, dass die entsprechenden Werte in der Zeile
strwbBName = Application.GetOpenFilename(, , , , False)
hinterlegt werden müßten, damit das automatisch klappt. Ist das so? Und wenn ja, wie sähe das aus?
Du bist in jedem Fall mein Tagesheld!
Danke Gert
Anzeige
AW: Frage
21.03.2019 14:17:40
Bernd
Hallo Gert,
In der realen Welt hat meine Tabelle "B.xlsx" den Namen "Kunden.slsm" und die Werte müssen in das Tabellenblatt "Kundendaten" geschrieben werden.
ich gehe davon aus, dass die entsprechenden Werte in der Zeile
strwbBName = Application.GetOpenFilename(, , , , False)
hinterlegt werden müßten, damit das automatisch klappt. Ist das so? Und wenn ja, wie sähe das aus?

Leider falsch. Wenn in der "realen Welt" deine Tabelle in Datei B "Kundendaten" heißt, dann musst du diesen Namen folgendermaßen einfügen:

rng = wbB.Sheets("Kundendaten").Range(wbA.Sheets(1).Range("B1").Value & wbA.Sheets(1). _
Range("A1").Value).Address
wbB.Sheets("Kundendaten").Range(rng).Value = wbA.Sheets(1).Range("C1").Value
Kurze Erklärung:
Wenn im Code "Sheets(1)" steht, dann referenziert man sich auf das erste Tabellenblatt einer Datei.
Analog funktioniert "Sheets(2)", "Sheets(3)", usw...
Wenn im Code "Sheets("Kundendaten")" steht, dann referenziert man sich auf das Tabellenblatt mit dem exakten Namen.
Vergleiche diesbezüglich auch die Verweise zu wbA!
Kleiner Tipp:
Schalte im VBA-Editor über "Ansicht" das "Lokalfenster" ein und gehe den Code Schritt für Schritt mit der Taste F8 durch...
Grüße, Bernd
Anzeige
AW: Frage
21.03.2019 15:21:56
Gert
Lieber Bernd,
hat alles funktioniert. Danke für die Erklärung!
Letzte Frage:
die Excel Datei "B" mit dem Blatt "Kundendaten" ist in der Praxis bereits geöffnet.
Weil Änderungsformular "A" bereits auf "B" Blatt Kundendaten zugreifen muss, um über =indirekt....
die vorhandenen (alten) Kundendaten auszulesen.
Das Makro, bei dem Du mir so nett behilflich bist, soll dannn geänderte Stammdaten zu dem Kunden (die im Änderungsformular "A" eingegben werden müssen) in "B" blatt Kundendaten übertragen.
Sicher könnte das Makro auf das Öffnen der Datei "B" verzichten, oder?
Ich freue mich auf Deine Antwort!
Danke im Voraus!
Gert
Anzeige
AW: Frage
22.03.2019 13:01:34
Bernd
Servus Gert,
ich persönlich würde eine Vermischung von Formel- und VBA-Lösungen lieber vermeiden.
Bzgl. der bereits offenen Datei lies mal z.B. diese Beiträge.
Darin wird per Function der Status geprüft, was sehr elegant und unkompliziert ist.
http://office-loesung.de/ftopic118311_0_0_asc.php
Sollten noch Fragen bestehen meld dich einfach nochmal.
Grüße, Bernd

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige