Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1624to1628
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 einer Workbook Variable in eine Variable

Range einer Workbook Variable in eine Variable
24.05.2018 16:37:05
JoNNy
Hallo zusammen,
ich möchte meine Code vereinfachen und die .activate Methode vermeiden.
Problem ich habe diesen Code:
 A_Baustein.Activate
Set KopierBereich = Range(Cells(1, 1), Cells(LastRow, LastColumn))

Und möchte das ganze in eine Zeile bekommen in etwa so:

Set KopierBereich = A_BausteinWS.Range(Cells(1, 1), Cells(LastRow, LastColumn))

A_BausteinWS ist hierbei eine Worksheet Variable.
Wo liegt mein Fehler?
Grup JoNNy

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range einer Workbook Variable in eine Variable
24.05.2018 16:57:57
Gerd
Set KopierBereich = A_BausteinWS.Range(A_BausteinWS.Cells(1, 1), A_BausteinWS.Cells(LastRow, LastColumn))
Hallo Jonny,
wer "A_..." sagt, muss es überall tun. :-)
Gruß Gerd
AW: Range einer Workbook Variable in eine Variable
24.05.2018 16:59:21
Tino
Hallo,
ich würde dies in einen With-Block einbauen.
Sonst müsstest du bei jedem Punkt A_BausteinWS davor setzen.
With A_BausteinWS
Set KopierBereich = .Range(.Cells(1, 1), .Cells(LastRow, LastColumn))
End With
Gruß Tino
Gelöst
25.05.2018 11:44:49
JoNNy
Hallo,
ich habe es jetzt mit Tinos Code gelöst das schien mir am besten um es später noch zu erweitern.
Die anderen Lösungen klappen aber auch :).
Danke an auch alle habt mir sehr geholfen.
Gruß JoNNy
Anzeige
AW: Range einer Workbook Variable in eine Variable
24.05.2018 17:57:44
Daniel
HI
das Problem ist folgendes: Range, Cells, Columns und Rows ohne Tabellenblattangabe beziehen sich immer auf das gerade aktive Tabellenblatt*
wenn du jetzt schreibst: Tabelle1.Range(Cells(), Cells()) kann es sein, dass die Cells auf einem anderen Blatt liegen als die Range, die sie definieren sollen und das führt zum Fehler.
Daher muss die Tabellenblattangabe auf jeden fall vor die beiden Cells. Vor der Range kann sie sogar entfallen.*
das wurde dir ja schon gezeigt.
ich bevorzuge die Zellenauswahl mit Resize, weil diese schön kurz ist:
Set Kopierbereich = A_BausteinWS.Cells(1, 1).Resize(LastRow, LastColumn)
sollte der kopierbereich nicht in Zeile 1 und Spalte 1 beginnen, müsstest du dann den Versatz von LastRow und Lastcolumn abziehen:
Set Kopierbereich = A_Baustein.Cells(x, y).Resize(LastRow - x + 1, LastColumn - y + 1)
Gruß Daniel
* das gesagte gilt für Code in einem allgemeinen Modul
steht der Code in einem Tabellenblattmodul, so wird bei fehlender Blattangabe immer das Modulblatt eingesetzt.
In diesem Fall muss auch vor der Range das Blatt angegeben werden:
A_BausteinWS.range(A_BausteinWs.cells(1, 1), A_BausteinWS.Cells(lastRow, lastcolumn))

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige