Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1032to1036
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

VBA Range Definition

VBA Range Definition
22.12.2008 16:21:00
Karen
Hallo Forum,
ich habe ein kleines Problem in meinem Makro.
Ich möchte eine Range abbilden, leider überträgt das Makro aber immer nur die Zeile 6.
For i = 2 To 256
If Cells(3, i).Value = datum Then
Range(Cells(6, i), Cells(40, i)).Copy
Selection.Copy
Cells(6, i + 1).Select
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End If
Next i
Vielen Dank für Eure Tips im voraus.
Viele Grüße und frohe Weihnachtstage.
Karen

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Range Definition
22.12.2008 16:27:30
Daniel
Hi
nja, es wird immer nur das eingefügt, was zuletzt kopiert wurde, und das ist mit:
SELECTION.COPY die aktuell markierte Zelle.
der Zellbereich, den sie vorher in die Zwischenablage kopiert haben, ohne ihn einzufügen wird da wieder verworfen.
Gruß, Daniel
AW: VBA Range Definition
22.12.2008 16:39:00
Rudi
Hallo
was soll das werden? Am Ende der Schleife gibt's einen Fehler.
Gruß
Rudi
AW: VBA Range Definition
22.12.2008 17:27:39
Björn
Huhu Karen
ersetz mal bitte Deinen Code
Range(Cells(6, i), Cells(40, i)).Copy
mit
Range(Cells(6, i), Cells(40, i)).Select
Selection.Copy
das müsste dann eigentlich funktionieren
gruß
björn
AW: VBA Range Definition
22.12.2008 17:39:00
Daniel
Hi
wenn schon, dann sollte der Code select-Frei sein:
For i = 2 To 255
If Cells(3, i).Value = datum Then
Range(Cells(6, i), Cells(40, i)).Copy
Cells(6, i + 1).PasteSpecial Paste:=xlFormulas, Operation:=xlNone, SkipBlanks:= False, Transpose:=False
End If
Next i
wenn sowieso nur Formeln übertragen werden, könnte auch das hier gehen:
For i = 2 To 255
If Cells(3, i).Value = datum Then
Range(Cells(6, i+1), Cells(40, i+1)).FormulaR1C1 = Range(Cells(6, i), Cells(40, i)).FormulaR1C1
End If
Next i
die Schleife sollte nicht bis 256 gegen, sondern nur bis 255, denn die letze Spalte kann eh nicht kopiert werden.
Gruß, Daniel
Anzeige
AW: VBA Range Definition
22.12.2008 18:12:18
Björn
Hallo Daniel
was hast Du gegen select?
gruß
björn
AW: Select vermeiden!
22.12.2008 18:25:03
Erich
Hi Björn,
lies mal z. B. http://www.online-excel.de/excel/singsel_vba.php?f=78
Aus der Schlussbemerkung:
"Was ich aber hoffentlich erreicht habe, ist, dass Sie in Zukunft jedes Select und Activate hinterfragen."
Alles Schöne und Gute für die kommenden SpecialDays wünscht euch Erich aus Kamp-Lintfort
AW: Select vermeiden!
22.12.2008 19:23:00
Björn
Hallo Erich, Hallo Daniel,
jo, so das ist ganz Recht.
Für mich ist es einfacher Select und Activate stehenzulassen. Meine Leute schaffens nämlich immer wieder
laufende Makro's zum streiken zu bringen. Und dann hangelste Dich durch 20 Seiten Code. Mit Zellbezügen quer über die ganze Mappe. Für mich ist es da halt einfacher im Code das Select und auch das Activate stehenzulassen.
Grundsätzlich habt ihr natürlich beide recht :).
Schöne Feiertage euch
björn
Anzeige
AW: VBA Range Definition
22.12.2008 18:37:00
Daniel
Hi
um es mal kurz zu machen, select-freie Programmierung hat folgende Vorteile:
- der Code wird kürzer (weniger tipparbeit)
- der Code wird verständlicher beim Lesen (wichtig für Änderungen und korrekturen)
- der Bildschirm bleibt ruhig
- der Programmablauf wird deutlich schneller
- man kann für Testzwecke ein Programm stoppen, im Excel veränderungen vornehmen und dann das Makro weiterlaufen lassen, ohne sich darum kümmern zu müssen, was grade selektiert ist.
eigentlich ist das select nur drin, weil der Recorder es halt aufzeichnen muss.
es ist mir auch nur ein Fall bekannt, für den das selektieren erforderlich ist, aber auch dafür gibts nen selektfreien Workaround (der dann aber etwas länger ist)
lediglich zu Testzwecken bei komplexen Zellbereichen baue ich ab und zu mal ein Select ein, um zu prüfen, ob da auch der Richtige Bereich angesprochen wird, aber das wirklich nur , wenn ich das Makro im Einzelstep teste. Ansonstn kommt das Select sofort wieder raus.
Gruß, Daniel
Anzeige
AW: VBA Select
22.12.2008 21:12:00
Gerd
Hi!

es ist mir auch nur ein Fall bekannt, für den das selektieren erforderlich ist, aber auch dafür gibts nen selektfreien Workaround 


Zitat eines VBA-Profis zu den 0,1 % - Fällen:
Zoom einstellen, Fenster fixieren und den User in eine bestimmte Zelle lotsen.
Gruß Gerd

AW: Ergänzung incl. Activate o.w.T.
22.12.2008 21:17:00
Gerd
.
AW: VBA Select
22.12.2008 23:54:00
Daniel
HI
Fenster fixieren geht ohne Select, wenn man das fenster erst teilt und dann fixiert.
ein geteiltes Fenster wird immer and der Teilungstelle fixiert, somit ist ein Select für diesen Vorgang nicht mehr erforderlich.
Also wieder ein Fall weniger, frohe Weihnacht ;-) Daniel
Anzeige
AW: VBA Select
24.12.2008 07:56:56
Gerd
Hi Daniel,
mit oder ohne geteiltem Fenster, dir ebenfalls.
Gruß Gerd
AW: VBA Range Definition
23.12.2008 07:59:00
Karen
Hallo Daniel, Björn, Gerd,
vielen Dank für Eure Hilfe!! Habe wieder etwas dazugelernt!
Frohe Weihnachten!
Grüße
Karen

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige