Anzeige
Archiv - Navigation
1312to1316
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

Range A in Range B übernehmen

Range A in Range B übernehmen
29.05.2013 22:47:10
Malte
Hallo,
ich würde gerne den Bereich AX bis CY aus der Tabelle "Daten" in den Bereich
O4 bis Q[(Y-X)+4] in der Tabelle "Berechnungen" kopieren.
Dabei steht der Bereich, also die Zeilen X und Y, in den Variablen X und Y.
Beispiel:
Bereich Anfang: X=18
Bereich Ende: Y=26
Dann würde ich gerne: A18 bis C26 in O4 bis Q[(26-18)+4] kopieren.
Dazu habe ich diesen Code:
Sheets("Berechnung").Range("O4:Q" & Y - X +4 = _
Sheets("Daten").Range("A" & X & ":C" & Y)
Aber irgendwie übernimmt er keine einzige Zeile. Könnte mir jemand sagen, wo der Fehler liegt?
Vielen Dank!
Gruß.

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
auf den 1,Blick fehlt eine Klammer hinter +4
30.05.2013 00:02:26
Matthias
Hallo
Dim x&, Y&
'Anfang: x = 18
'Bereich Ende: Y = 26
x = 18: Y = 26
Sheets("Berechnung").Range("O4:Q" & Y - x + 4).Value = Sheets("Daten").Range("A" & x & ":C" & Y).Value
Gruß Matthias

AW: auf den 1,Blick fehlt eine Klammer hinter +4
30.05.2013 02:09:41
Malte
Vielen Dank für den Hinweis :-) Funktioniert wie eine 1!
Gruß!

... und ein .Value
30.05.2013 01:58:06
Erich
Hi Malte,
Matthias hat dir schon eine funktionierende Anweisung gepostet.
Hier noch zwei Vorschläge:

Option Explicit
Sub aTest()
Dim X As Long, Y As Long, lAnz As Long
X = 18
Y = 26
Sheets("Berechnung").Range("O4:Q" & Y - X + 4) = _
Sheets("Daten").Range("A" & X & ":C" & Y).Value
' oder
lAnz = Y - X + 1
Sheets("Berechnung").Cells(4, 15).Resize(lAnz, 3) = _
Sheets("Daten").Cells(X, 1).Resize(lAnz, 3).Value
End Sub
Wesentlich ist das ".Value" jeweils hinter dem Quellbereich.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: ... und ein .Value
30.05.2013 02:11:27
Malte
Hallo,
vielen Dank für die Antwort. Warum ist denn das .Value entscheident?
Ich habe zuerst mit range("A1:C5") = "Test" ausprobiert, ob ich so Werte übernehmen kann und das hat funktioniert. Warum brauche ich bei der "neuen" Lösung ein .value?
Vielen Dank für die Hilfe! :)
Gruß!

.Value
31.05.2013 18:26:22
Erich
Hi Malte,
was meinst du mit "der 'neuen' Lösung"?
Sowohl bei Matthias' Anweisung als auch bei meinen beiden Vorschlägen steht ".Value" hinter dem Quellbereich.
(Bei Matthias auch hinter dem Zielbereich - das ist klarer, aber nicht unbedingt erforderlich.)
Bei der Anweisung in deinem ersten Beitrag fehlt (außer der Klammer) das .Value am Ende - deshalb funzt sie nicht.
Das .Value ist durchaus entscheidend!
Bei
range("A1:C5") = "Test"
gibt es keinen Quellbereich. Rechts vom Gleichheitszeichen steht der Value (Wert) "Test",
da ergibt sich also kein Widerspruch zum eben Gesagten.
Wenn rechts vom Gleichheitszeichen am Ebnde das .Value fehlt, richtet sich die Interpretation der rechten Seite
nach dem Typ der linken Seite, also dem Zielobjekt.
Links kann eine Variable mit einem elemntaren Datentyp (Long, String, Double, ...) stehen,
dann sollte Value angenommen werden.
Schwieriger wird es (für VBA), wenn links ein Objekt steht - wie in deinem Fall:
Sheets("Berechnung").Cells(4, 15).Resize(lAnz, 3)
ist ein Range-Objekt, das diverse Eigenschaften hat wie Font, Interior usw. und - Value.
Da ist dann nicht klar, dass das Range auf der rechten Seite Values liefern soll, nichts anderes.
Ein wenig unterhaltsam (und passend zum Thema) ist dieser Thread:
http://microsoft.public.de.excel.narkive.com/zRSJ6jNO/zellformatierung-vollig-selbstherrlich-97.2
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich und: Schönes Wochenende allerseits!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige