Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1960to1964
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

Relative Range in anderes Tabellenblatt bringen via VBA??

Relative Range in anderes Tabellenblatt bringen via VBA??
05.02.2024 17:14:16
Frank Dreier
Hallo Leute,

ich bin schon wieder am verzweifeln. Ich selektiere z.B. A1:D4 (16 Zellen) in Tabelle1 und er soll das einfach nur in Tabelle 2 ab A1 kopieren, man kennt jedoch den D-Wert nicht, also die Anzahl D4 variert in der Selektion, manchmal 3 und manchmal 2 etc. (wird gleich klarer was ich meine). Daher benutze ich einfach Selection.Value was auch gut funktioniert.

Nun will ich eigentlich nur diese Selektion in Tabelle 2 via internen Speicher von Excel kopieren (copy&paste kann ich nicht benutzen).
Wenn ich im gleichen Tabellenblatt kopieren möchte, funktioniert zum Beispiel folgende Formel:

Selection.Offset(0, 6).Value = Selection.Value
(Er fügt damit A1:D4 komplett, was selektiert ist, in F1:I4 im gleichen Tabellenblatt ein, so wie es sein soll)

Wenn ich allerdings das in ein anderes Tabellenblatt verschieben möchte, geht dieser Code nicht. Warum??

Ich selektiere in Tabelle 1 A1:D4 die zu kopierenden Zellen und lasse folgenden Code laufen:

Worksheets("Tabelle2").Selection.Offset(0, 6).Value = Selection.Value


Warum kann man hier Selection.Offset nicht verwenden? Habt Ihr eine andere Idee? Danke...

Habe auch schon mit Range und Cells experimentiert, klappt alles nicht, er nimmt dann nur die 1. Zelle rüber usw., den Rest der Selektion lässt er einfach weg :(

(Ursprung ist dann z.B. : Worksheets("Tabelle2").Range("A1:D1").Value = Selection.Value, damit kopiert er dann nur A1:D1 in die Zellen, aber A2:D4 lässt er weg obwohl das auch selektiert war).



12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Relative Range in anderes Tabellenblatt bringen via VBA??
05.02.2024 17:32:50
Oberschlumpf
Hi Frank,

versuch es so:

Du musst in der Tabelle mit der Auswahl sein, dann diesen Code starten


Selection.Copy Worksheets("Tabelle2").Range("F1")

Hilfts?
Nein? Dann zeig bitte per Upload eine Bsp-Datei mit genügend Bsp-Daten in den richtigen Zellen und den notwendigen Sheets.

Ciao
Thorsten
AW: Relative Range in anderes Tabellenblatt bringen via VBA??
05.02.2024 18:18:55
{Boris}
Hi,

Wenn ich allerdings das in ein anderes Tabellenblatt verschieben möchte, geht dieser Code nicht. Warum??

Ich selektiere in Tabelle 1 A1:D4 die zu kopierenden Zellen und lasse folgenden Code laufen:

Worksheets("Tabelle2").Selection.Offset(0, 6).Value = Selection.Value


Weil Tabelle2 in dem Moment keine Selection-Eigenschaft hat.

VG, Boris
Anzeige
Ja, Boris
05.02.2024 19:01:39
Frank Dreier
Ja, das hatte ich schon gesehen. Das verstehe ich auch noch nicht ganz, warum einige (in meinen Augen) sinnvolle Eigenschaften manche Funktionen einfach nicht besitzen und andere hingegen schon. Aber das scheint mit dem Aufwand der Programmierung von Excel/VBA ansich zusammenzuhängen etc. Da muss man dann einfach nach anderen Lösungen suchen.
Selection-Eigenschaft
05.02.2024 19:10:56
{Boris}
Hi,

die Hilfe zur Selection-Eigenschaft ist dazu sehr klar:

Gibt das aktuell ausgewählte Objekt im aktiven Arbeitsblatt für ein Application-Objekt zurück.

So isses halt nun mal ;-)

VG, Boris

AW: Selection-Eigenschaft
05.02.2024 19:33:18
schauan
Hallöchen,

Du könntest z.B. per Worksheet_SelectionChange die Adresse der Selection oder sie selbst in eine globale Variable geben.
Anzeige
Thorstens Idee funktioniert? Anscheinend, Erklärung?
05.02.2024 18:05:11
Frank Dreier
Hallo Thorsten,

danke für die Idee. Also funktionieren tut Deine Lösung,- ich war nur skeptisch wegen dem .copy. Habe im Zwischenspeicher nachgeschaut in Excel und tatsächlich benutzt Excel anscheinend bei "Selection.Copy" nicht den Zwischenspeicher (warum auch immer).

Es wird noch kurioser:

Wenn man z.B.:
Selection.Copy

Range("F1")..PasteSpecial Paste:=xlPasteValues


Benutzt wird die Zwischenablage benutzt.
Wenn man jedoch Thorsten's Lösung nimmt:

Selection.Copy Worksheets("Tabelle2").Range("F1")


Wird dieser anscheinend nicht benutzt. Ich kann zumindest nix finden. Das ist für mich unglaublich. Excel wird für mich immer neue Überraschungen bereit halten. Kann das einer erklären ?

Anzeige
AW: Thorstens Idee funktioniert? Anscheinend, Erklärung?
05.02.2024 18:28:33
Oberschlumpf
Hi Frank,

a) erklären/beantworten kann ich deine Speicherfrage nicht
b) frage ich mich aber (schon wieder), wieso du nur soo scharf darauf bist, genau das verstehen zu wollen

Nun gut, natürlich kannst du versuchen, alls zu verstehen - auch die Art + Weise, wie Excel selbst programmiert wurde.
Aber wichtig ist doch, so finde zumindest ich, dass etwas funktioniert - egal, ob's die richtige Formel ist, oder ob's der richtige VBA-Code ist.

Ich wünsch dir weiter viel Erfolg.

Ciao
Thorsten
Ich muss das wissen weil...
05.02.2024 19:07:20
Frank Dreier
...ich sonst nicht sicher sein kann ob der Zwischenspeicher benutzt wird. Sollte ich dann das andere Programm, welches diesen benötigt, parallel laufen lassen, kann es zu Störungen kommen. Ich muss auch zugeben, dass ich einer dieser Personen bin, die Logische Zusammenhänge nur in Gänze richtig nachvollziehen können, also wenn Du viele Details kennst. Viele könne ja einfach gewisse Formeln/Funktionen lernen und diese anwenden und in einem gewissen Rahmen übertragen. Das reicht mir aber nicht, da ich oft bei neuen Sachen dann komplett auf dem Schlauch stehe,- mehr als andere,- sofern ich die Sachen davor nicht verstanden habe. Daher dieses Akribische.

Danke an alle (schon wieder ;) ).
Anzeige
AW: Thorstens Idee funktioniert? Anscheinend, Erklärung?
05.02.2024 18:41:46
onur
"Wird dieser anscheinend nicht benutzt. Ich kann zumindest nix finden. Das ist für mich unglaublich. Excel wird für mich immer neue Überraschungen bereit halten. Kann das einer erklären"
Einfach mal die "Gebrauchsanleitung" von ".Copy" lesen:

"Gibt den neuen Bereich an, in den der angegebene Bereich kopiert wird. Fehlt dieses Argument, kopiert Microsoft Excel den Bereich in die Zwischenablage."
Ok Onur, das ist super.
05.02.2024 18:59:34
Frank Dreier
Haha. Klasse. Genau solche Erklärungen brauche ich, sonst verstehe ich die Zusammenhänge nicht. Danke für diesen Hinweis. Das ist ja sehr interessant.
Sofern man also in der gleichen Codezeile .copy benutzt und die Werte auch in dieser Codezeile wieder einfügt benutzt Excel keinen Windows-Zwischenspeicher / Zwischenablage. Tja, das muss man halt wissen. Danke Onur!
Anzeige
Gerne !
05.02.2024 19:01:19
onur
Sorry, dass ich die Excel-Magie entzaubert habe. :)
AW: Gerne !
05.02.2024 19:10:35
Frank Dreier
Ach, ich finde das ja gut. So kann ich zumindest gewisse Dinge nachvollziehen. Das wird mir bei zukünftigem "Kopieren" sehr helfen. Ich hätte wahrscheinlich sonst immer in die Zwischenablage geschaut ob nicht doch etwas drin liegt bei einer neuen Codierung! Insofern... nochmals Danke.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige