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

Cells in Range bei VBA

Cells in Range bei VBA
06.05.2015 10:03:50
Ulrich
Hallo,
ich hoffe ihr könnt helfen
folgende Zeile geht
Worksheets("vorl").Range("H34:BK34").Copy
gewandelt in cells geht nicht
Worksheets("vorl").Range(Cells(34, 8), Cells(34, 63)).Copy
benutzt in
Worksheets("vorl").Range(Cells(34, 8), Cells(34, 63)).Copy
Range(Cells(zeile, 8), Cells(zeile, 63)).PasteSpecial xlPasteFormats
Range(Cells(zeile, 8), Cells(zeile, 63)).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
ich bekomm dann einen laufzeitfehler
Was übersehe ich?

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cells in Range bei VBA
06.05.2015 10:13:03
EtoPHG
Hallo Ulrich,
Was du übersiehst: Deine Cells(row,col) Objekte sind nicht vollständig referenziert. D.h. diese beziehen sich auf das gerade aktive Tabellenblatt und nicht auf das durch das Range Objekt referenzierte Worksheet.Darum müsste es eigentlich heissen:
Worksheets("vorl").Range(Worksheets("vorl").Cells(34, 8), Worksheets("vorl").Cells(34, 63)). _
Copy
Was aber alternativ mit einem
With Worksheets("vorl")
.Range(.Cells(34, 8), .Cells(34, 63)).Copy
'etc
End With
übersichtlicher und lesbarer dargestellt werden kann. Beachte die . [Punkte], welche sich auf das im With referenzierte Objekt beziehen.
Gruess Hansueli

Anzeige
AW: Cells in Range bei VBA
06.05.2015 10:20:18
Daniel
Hi
eine Alternative zur WITH-Klammer ist die verwendung der RESIZE-Funktion, um die ständige Wiederholung des Blattnamens zu vermeiden:
Worksheets("vorl").Range(Worksheets("vorl").Cells(34, 8), Worksheets("vorl").Cells(34, 63)). _
Copy

wird zu
Worksheets("vorl").Cells(34, 8).Resize(1, 56).Copy
das Problem bei der WITH-Klammer ist, das man sie immer nur für ein Objekt verwenden kann und wenn man mit mehreren Zellbereichen auf unterschiedlichen Blättern arbeitet, braucht man dann noch eine Abkürzungsmöglichkeit für die weiteren Bereiche.
Gruß Daniel

Anzeige
AW: Cells in Range bei VBA
06.05.2015 10:20:18
Daniel
Hi
eine Alternative zur WITH-Klammer ist die verwendung der RESIZE-Funktion, um die ständige Wiederholung des Blattnamens zu vermeiden:
Worksheets("vorl").Range(Worksheets("vorl").Cells(34, 8), Worksheets("vorl").Cells(34, 63)). _
Copy

wird zu
Worksheets("vorl").Cells(34, 8).Resize(1, 56).Copy
das Problem bei der WITH-Klammer ist, das man sie immer nur für ein Objekt verwenden kann und wenn man mit mehreren Zellbereichen auf unterschiedlichen Blättern arbeitet, braucht man dann noch eine Abkürzungsmöglichkeit für die weiteren Bereiche.
Gruß Daniel

Anzeige
AW: Cells in Range bei VBA
06.05.2015 10:32:46
Ulrich
vielen Dank
manchmal kann es so einfach sein :)

AW: Cells in Range bei VBA
06.05.2015 10:39:47
Luschi
Hallo Daniel,
bei solchen Manipulationen solltest Du auch die Umrechnung von
Range(Cells(..), Cells(..)) auf Range(...) mitliefern!
Gruß von Luschi
aus klein-Paris

AW: Cells in Range bei VBA
06.05.2015 10:47:54
Daniel
Hi
was für Manipulationen?
welche Range?
die Resize-Funktion wird ja in der Hilfe erklärt (muss man im VBA-Editor nur den Cursor drauf setzen und F1 drücken), und die meisten Anwender dürften in der Lage sein, selbstständig von Obere Zeile / Untere Zeile auf Anzahl Zeilen umzurechnen.
Gruß Daniel

Anzeige
Eine Möglichkeit solcher 'Abkürzung' bestünde ...
06.05.2015 12:13:19
Luc:-?
…ja wohl schon darin, Set zu verwenden, Daniel,
ggf auch mit .Resize… ;-]
Gruß, Luc :-?
Besser informiert mit …

AW: Luc ich bin der falsche ...
06.05.2015 12:33:08
Daniel
... Ansprechpartner.
Ulrich hat die Frage gestellt und wenn du eine weitere Lösungsalternative hast, solltest du dich an ihn wenden.
Gruß Daniel

AW: Luc ich bin der falsche ...
06.05.2015 12:33:18
Daniel
... Ansprechpartner.
Ulrich hat die Frage gestellt und wenn du eine weitere Lösungsalternative hast, solltest du dich an ihn wenden.
Gruß Daniel

Anzeige
Du hast 'Abkürzung' ins Spiel gebracht! ;-> owT
06.05.2015 13:45:00
Luc:-?
:-?

AW: ja und?
06.05.2015 14:08:45
Daniel
wie gesagt, wenn du ne alternative Lösung hast die besser ist als die bisher gezeigten, dann nur heraus damit.
Gruß Daniel

Das ist quasi auch eine. die du nicht erwähnt ...
06.05.2015 14:50:21
Luc:-?
…hattest. Da aber schon Lösungen da sind, warum noch eine…?
Luc :-?

AW: genau, warum noch eine...
06.05.2015 15:08:24
Daniel
aber diese Frage hättest du dir vor deinem ersten Beitrag stellen sollen dann auf hin verzichten, wenn du der Meinung bist dass schon genügend Lösungen gegeben wurden.
Gruß Daniel

War absichtlich an dich gerichtet, Naseweis! owT
07.05.2015 00:22:42
Luc:-?
:-?

AW: War absichtlich an dich gerichtet, Naseweis! owT
07.05.2015 01:18:34
Daniel
Warum Richtfest du absichtlich was gegen mich?
Könnte es sein, dass du ein kleiner nachtragender und gehässiger
Wadenbeisser bist?

Anzeige
Feierst du diese 'Richtfeste' nicht ständig, ...
09.05.2015 01:27:38
Luc:-?
…Daniel,
und nicht nur auf „meinen Baustellen“…? :->
Vielleicht noch etwas mehr auf die Hinterbeine stellen, deine „Waden“ liegen mir sonst doch etwas zu entfernt… :->
Luc :-?

AW: deswegen machst du ja auch
09.05.2015 02:27:21
Daniel
ständig solche Klimmzüge, nur um was gegen mich zu schreiben.

Ich sehe das eher umgekehrt! owT
09.05.2015 12:44:20
Luc:-?
:-?

AW: Ich sehe das eher umgekehrt! owT
09.05.2015 13:18:57
Daniel
Ich weiss das du das anders siehst.
Aber allein dein erster Beitrag in diesem Thread zeigt deutlich, dass du keine Gelegenheit auslässt.

Wenn ich denn alle deine BTe lesen würde! ;-] owT
10.05.2015 03:30:49
Luc:-?
:-?

AW: Wenn ich denn alle deine BTe lesen würde! ;-] owT
10.05.2015 12:36:21
Daniel
dann frage ich mich, warum du gerade über diesen Beitrag gestolpert bist, der ja ansonsten ein recht profanes Anfängerthema behandelt, welches eigentlich unterhalb des Schwiergkeitsniveau liegst, für dass du dich normalerweise interessierst.
Dem Fragesteller eine hilfreiche Antwort zu geben war hier ja nicht dein Ziel

Anzeige
Schon mal was von Zufall gehört? ;-] owT
10.05.2015 18:28:24
Zufall
:-?

AW: Cells in Range bei VBA
06.05.2015 10:27:39
Luschi
Hallo Ulrich,

- bei 'Worksheets("vorl").Range("H34:BK34")' kennt jedes aufgeführte Element
das der Bereich "H34:BK34" zur Tabelle 'vorl' gehört.
- bei 'Worksheets("vorl").Range(Cells(34, 8), Cells(34, 63))'
zeigt Cells(..) auf die gerade sichbare Tabelle auf dem Monitor, aber
Range(..) auf die Tabelle 'vorl'
- und da knallt es eben; deshalb so;
With Worksheets("vorl")
.Range(.Cells(34, 8), .Cells(34, 63)).Copy
End With
- jetzt zeigen alle Objekte auf die gleiche Tabelle und es klappt
Gruß von Luschi
aus klein-Paris
PS: beachte die Punkte '.' vor den Objekten!

Anzeige
AW: Cells in Range bei VBA
06.05.2015 10:41:33
Ulrich
ihr macht mich glücklich
und schön mit Erklärungen und nicht nur codeschnippsel

AW: Noch ein Tip...
06.05.2015 10:53:58
Daniel
beim Einfügen reicht es, die linke obere Zelle des Einfügebereichs anzugeben.
Excel passt die Grösse des Einfügebereichs dann automatisch an die Grösse des kopierten Bereichs an.
With Worksheets("vorl")
.Range(.Cells(34, 8), .Cells(34, 63)).Copy
.Cells(zeile, 8).PasteSpecial xlPasteFormats
.Cells(zeile, 8).PasteSpecial xlPasteFormulas
end with
Application.CutCopyMode = False
die Angabe des gesamten Einfügebereichs ist nur dann notwendig, wenn die Grösse von der Grösse des kopierten Bereichs abweicht (bspw weil du die kopierte Zeile mehrfach untereinander duplizieren willst)
Gruß Daniel
Anzeige

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige