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

Bereich mit range(Cells) von einem WB in

Bereich mit range(Cells) von einem WB in
02.03.2022 10:30:38
einem
Hallo,
ich hatte vor einiger Zeit schon einmal ein ähnliches Problem, bei dem mir sehr gut geholfen wurde. Leider kann ich die Lösung nicht auf mein neues Problem anwenden. Ich versuche es einmal darzustellen. Vielleicht ist die Lösung ja ganz einfach. Ich komme nur nicht drauf und die angebotenen Lösungen funktionieren nicht wirklich.
Gegeben sind WB_ziel und WB_quelle. In WB_ziel gibt es das WS "ERGEBNISSE", in WB_quelle das WS "TIPPSCHEIN"
WB_quelle ist geöffnet, die Kopierfunktion wird über einen CB aufgerufen.
Was soll nun passieren?
aus WS TIPPSCHEIN soll der Bereich p3,p4 bis p3, p4+18 kopiert werden undi m WS ERGEBNISSE in den Bereich p1,p2 bis p1, p2+18 eingetrage werden
Was mir fehlt sind:
Welches WB muss offen, bzw. aktiv sein?
Wie definiere ich den Bereich?
With Workbooks(dateiname).Worksheets("TIPPSCHEIN")
.Range(.Cells(p3, p4), .Cells(p3, p4 + 18)).select
.Selection.Copy
End With
Fehler Laufzeitfehler: 1004 Anwendungs- oder objektdefinierter Fehler

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lass einfach das Select weg...
02.03.2022 10:34:41
{Boris}
Hi,
...und kopiere direkt:

With Workbooks(dateiname).Worksheets("TIPPSCHEIN")
.Range(.Cells(p3, p4), .Cells(p3, p4 + 18)).Copy Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Range("P1")
End With
VG, Boris
Was Cells(p3, p4) etc..
02.03.2022 10:39:27
{Boris}
Hi,
...soll, weiß ich nicht. Da musst Du natürlich den zu kopierenden Bereich ansprechen - wahrscheinlich ganz einfach mit Range.
Wenn p3, p4 + 18 heißen soll: P3:P21, dann Range("P3:P21")
VG, Boris
AW: Was Cells(p3, p4) etc..
02.03.2022 10:51:04
Edgar
P1 bis p4 sind Variablen. deshalb kann ich nicht Range(P1:P3) sagen sondern muss mit Range(cells) arbeiten
AW: Lass einfach das Select weg...
02.03.2022 10:49:20
Edgar
Bringt denselben Fehler.
With Workbooks(dateiname).Worksheets("TIPPSCHEIN")
.Range(.Cells(p3, p4), .Cells(p3, p4 + 18)).Copy Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Range("P1")
End With
dateiname = "3_CCC_TS.XLSM"
Zieldatei = "T&W_01.xlsm"
Ist die Dateiendung case sensitive?
Das WS ERGEBNISSE ist nicht visible.
Anzeige
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 10:49:59
einem
Hallo
noch eine Lösung:
in ein Modul in WS_ziel

Sub Fehlende_ID_ermitteln()
Dim TB1 As Worksheet, TB2 As Worksheet
Dim P1 As Integer, P2 As Integer, P3 As Integer, P4 As Integer, Res As Integer
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks("WB_quelle.xlsx").Sheets("TIPPSCHEIN")
P1 = 5: P2 = 3: P3 = 4: P4 = 5
Res = 18
TB2.Cells(P3, P4).Resize(1, Res).Copy TB1.Cells(P1, P2)
End Sub
LG UweD
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 11:04:12
einem
UweD,
funktioniert leider auch nicht:
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks(dateiname).Sheets("TIPPSCHEIN")
' p1 = 5: p2 = 3: p3 = 4: p4 = 5
RES = 18
TB2.Cells(p3, p4).Resize(1, RES).Copy TB1.Cells(p2, p1)
IBei der letzten Zeile kommt derselbe Fehler. Ich habe TB2 vorher geöffnet. Ist das falsch?
Anzeige
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 11:18:08
einem

Sub Fehlende_ID_ermitteln()
Dim dateiname As String
Dim TB1 As Worksheet, TB2 As Worksheet
Dim P1 As Integer, P2 As Integer, P3 As Integer, P4 As Integer, Res As Integer
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks("dateiname").Sheets("TIPPSCHEIN")
dateiname = "3_CCC_TS.XLSM"
P1 = 5: P2 = 3: P3 = 4: P4 = 5
Res = 18
TB2.Cells(P3, P4).Resize(1, Res).Copy TB1.Cells(P1, P2)
End Sub
Die Variable Dateiname muss vorher angegeben sein
Beide Dateien müssen geöffnet sein.
P1 bis P4 dürfen nicht 0 sein
LG UweD
LG UweD
Fehler
02.03.2022 11:20:28
UweD
Dateiname muss natürlich vor das Set

Sub Fehlende_ID_ermitteln()
Dim dateiname As String
Dim TB1 As Worksheet, TB2 As Worksheet
Dim P1 As Integer, P2 As Integer, P3 As Integer, P4 As Integer, Res As Integer
dateiname = "3_CCC_TS.XLSM"
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks("dateiname").Sheets("TIPPSCHEIN")
P1 = 5: P2 = 3: P3 = 4: P4 = 5
Res = 18
TB2.Cells(P3, P4).Resize(1, Res).Copy TB1.Cells(P1, P2)
End Sub

Anzeige
Mist
02.03.2022 11:26:14
UweD
Da ist der Wurm drin
dateiname natürlich ohne "

Sub Fehlende_ID_ermitteln()
Dim dateiname As String
Dim TB1 As Worksheet, TB2 As Worksheet
Dim P1 As Integer, P2 As Integer, P3 As Integer, P4 As Integer, Res As Integer
dateiname = "3_CCC_TS.XLSM"
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks(dateiname).Sheets("TIPPSCHEIN")
P1 = 1: P2 = 3: P3 = 4: P4 = 5
Res = 18
TB2.Cells(P3, P4).Resize(1, Res).Copy TB1.Cells(P1, P2)
End Sub

AW: Mist
02.03.2022 11:47:43
Edgar
Das mit dem Resize habe ich noch nicht ganz auf dem Schirm.
In Prosa gesprochen will ich den Bereich Quelle P3,P4 bis P3, P4 +17 kopieren.
Da P3 und P4 variabel sind kann ich nicht mit Range("B21:S21") arbeiten sondern muss so etwas wie RANGE(cells(21,2),cells(21,19) nutzen. Und das mit den Variablen. also Range(cells(P3, P4), cells(P3, P4 +17)
Anzeige
AW: Mist
02.03.2022 11:56:08
UweD
Hallo
&GT&GT Das mit dem Resize habe ich noch nicht ganz auf dem Schirm.
Bedeutet: von der eine Celle beginnend cells(21,2) und verändere die Größe des Bereichs auf 1 Zeile und auf 17 Spalten.
Was genau RANGE(cells(21,2),cells(21,19) entspricht.
LG UweD
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 11:39:28
einem
Der Fehler lag in der Variablen P4. Dort war kein Wert zugewiesen. Der Code läuft jetzt ohne Fehler durch, aber nach Ausführung steht im Ziel WS nichts drin
p4 = 2
MsgBox (p1 & " " & p2 & " " & p3 & " " & p4)
Set TB1 = ThisWorkbook.Sheets("ERGEBNISSE")
Set TB2 = Workbooks(dateiname).Sheets("TIPPSCHEIN")
' p1 = 5: p2 = 3: p3 = 4: p4 = 5
RES = 17
TB2.Cells(p3, p4).Resize(1, RES).Copy TB1.Cells(p2, p1)
Anzeige
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 11:21:51
einem
Hi
du hast hier die Zuweisung der Variablen p1-p4 noch als Kommentar geschrieben (Hochkomma!)
damit steht diese Zeile nur als Hinweistext im Code, wird aber nicht ausgeführt und deine Variablen haben den Wert 0.
Einfach das Hochkomma rausnehmen, dann sollte es funktionieren
ob eine Zeile eine Codezeile oder ein Kommentar ist, sieht man eigentlich recht schnell an der Farbe.
Code ist schwarz, Kommentare sind grün (sofern man mit den Standardeinstellungen arbeitet)
Gruß Daniel
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 11:41:49
einem
Hallo Daniel,
die Zuweisung werfolt weiter oben. Hier habe ich die Var noch einmal als Kommemtar für mich während der Entwicklung.
Aber Du hast insofern Recht, als das die Var P4 keinen Wert hatte. Den habe ich jetzt gesetzt und der Code läuft fhlerfrei durch. Nur wird der Quellbereich nicht kopiert. Der Zielbereich ist nachher leer.
Anzeige
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 12:02:57
einem
Der Code sieht jetzt so aus und läuft fehlerfrei.
Jedoch ist der Bereich in ERGEBNISSE leer.
With Workbooks(dateiname).Worksheets("TIPPSCHEIN")
.Range(.Cells(p3, p4), .Cells(p3, p4 + 17)).Copy Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Range(Cells(p2, p1), Cells(p2, p1 + 17))
End With
So lange Du nicht mal...
02.03.2022 12:13:20
{Boris}
Hi,
...Deine Mappe hier hochlädst, bleibt das alles Rätselraten. Offensichtlich haben Deine Variablen nicht die gewünschten Werte.
Außerdem musst Du beim Ziel auch Cells mit dem Rest verbinden:
.....Copy Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Range(Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Cells(p2, p1), Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Cells(p2, p1 + 17))
VG, Boris
Anzeige
Nein, muss man nicht.
02.03.2022 12:29:24
Daniel
Sowohl bei Quelle.Copy Ziel als auch bei Quelle.Copy: Ziel.PasteSpecial reicht es aus, als Ziel die linke obere Ecke anzugeben. Hier gibt man nur dann einen Zellbereich an, wenn die kopierten Daten vervielfacht werden sollen.
Soll jedoch 1:1 kopiert werden, reicht linke obere Zelle des Ziels.
Nur wenn die Werte mit Ziel.Value = Quelle.Value über tragen werden, müssen die Zellbereiche von Quelle und Ziel gleich groß sein.
Gruß Daniel
Das habe ich gar nicht gemeint...
02.03.2022 12:34:12
{Boris}
Hi Daniel,
...sondern nur, dass auch (grundsätzlich) für das Ziel das Workbook sowie das Sheet für Cells benannt werden muss.
Da der OP den gesamten Bereich mit Range(Cells(...), Cells(...)) angesprochen hat, fehlte vor Cells jeweils halt WB und Sheet.
Aber es reicht natürlich dann:
.Copy Workbooks(Zieldatei).Worksheets("ERGEBNISSE").Cells(p2, p1)
VG, Boris
Anzeige
AW: Bereich mit range(Cells) von einem WB in
02.03.2022 14:00:08
einem
Moin Edgar,
ich vermute, dass entweder ein falscher u. leerer Quellbereich oder ein unpassender Zielbereich codiert worden ist.
Beim Kopiervorgang wird nicht in allen solchen Fällen eine Fehlermeldung erzeugt.
Beim Testen hilft ".Activate" u. ".Select"
Die Resize-Argumente sind .Resize(Zeilenanzahl, Spaltenanzahl)
Gruß Gerd
AW: Bereich mit range(Cells) von einem WB in
03.03.2022 13:02:10
einem
Hallo Gerd,
oh man, Anfängerfehler!
Ich wundere mich warum die Daten nicht übertragen werden. Grund: In der Quelle ist der angesprochene Bereich leer. :(
Ich kopiere jetzt allerdings nicht mehr direkt aus einem WB ins Andere sondern ich kopiere zuerst das WS, übertrage dann die Daten und lösche das WS wieder.
Nicht elegant aber funzt.
Danke an alle die mir geholfen haben!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige