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

VBA Range-Anweisung
Hermann
Hallo,
ich bin auf der Suche nach einem VBA-Code, der mir in Spalte J von J8 bis zur letzten verwendeten Zeile eine Formel einbringt. Das Problem dabei ist nicht die Formel, sondern wie ich das mit der letzten Spalte in der "Range-Anweisung" formulieren soll.
Mit fest vorgegebener Zeilenzahl (J222) läuft der VBA-Code schon, so:
ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-1]"
Selection.AutoFill Destination:=Range("J8:J222")
...aber ich will die letzte Zeile in der Variablen "lur" ermitteln und dann in der Range-Anweisung verwenden, wie geht das?
Die last-used-row (=lur) erhalte ich so:
Dim lur As Integer
lur = ActiveSheet.UsedRange.Rows.Count
Selection.AutoFill Destination:=Range("J8:J & lur & )" -- das geht laut Kompilierer so nicht
Selection.AutoFill Destination:=Range("J8:J ""& lur &"" )" -- das geht laut Kompilierer so auch nicht
wie geht das richtig?
Gruß Hermann

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Range-Anweisung
13.09.2011 19:56:28
EvilRik
Hallo Hermann,
ja, das geht so im Prinzip. Nah dran :)

ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-1]"
lur = ActiveSheet.Cells(Rows.Count, "I").End(xlUp).Row 'Besser so
Selection.AutoFill Destination:=Range("J8:J" & lur)

Gruß Henrik
AW: VBA Range-Anweisung
13.09.2011 20:18:31
Hermann
Hallo Henrik,
läuft!!!
auch die Formulierung zur Ermittlung der letzten belegten Zeile ist jetzt richtig.

lur = ActiveSheet.Cells(Rows.Count, "I").End(xlUp).Row 'Besser so

Danke für die schnelle Hilfe
Gruß Hermann
AW: VBA Range-Anweisung
13.09.2011 20:44:36
Gerd
Hallo Hermann,
wenn der UsedRange passt.

Sub Test()
With ThisWorkbook.Worksheets("Tabelle1") 'ANPASSEN
With .Range(.Cells(8, 10), .Cells(.UsedRange.Rows.Count, 10))
.FormulaR1C1 = "=R[-1]C+RC[-1]"
End With
End With
End Sub
Gruß Gerd
Anzeige
AW: VBA Range-Anweisung
13.09.2011 21:02:16
Hermann
Hallo Gerd,
nach langem Nachdenken konnte ich deine Lösung jetzt auch nachvollziehen,
ich bin halt noch nicht so der Fuchs...
aber in dem Makro werden in der Tabelle1 einige Zeilen unten und rechts weggelöscht,
so dass ich bei selbst einem manuellen Test mit "+ende" ein paar Zeilen unter der letzten Zahl rauskomme,
d.h. mein "UsedRange" passt nach den Löschungen nicht mehr ganz mit dem Bereich überein, der tatsächlich noch Zahlen enthält.
Danke und Gruß Hermann
=Range("J8:J" & lur )
13.09.2011 20:08:58
NoNet
Hallo Herrmann,
Die Angabe des Bereiches in der RANGE()-Eigenschaft muss ja ein STRING sein, der aus dem konstanten Text "J8:J" und der Variablen lur besteht - zusammengefasst also : "J8:J" & lur
Die Anweisung müsste also mit dieser Syntax lauten : Selection.AutoFill Destination:=Range("J8:J" & lur)
Noch ein TIPP :
Die Variable lur ist in Deinem Beispiel als INTEGER deklariert, sie kann also ganzzahlige Werte zw. -32768 bis +32767 annehmen. Negative Zeilennnr. gibt es natürlich nicht, d.h. es bleiben die Werte 1 bis 32767 übrig.
Da selbst ältere Excel-Versionen bis zu 65536 (=256^2) Zeilen unterstützen, seit Excel 2007 gar 1048576 (=256^2,5), könnte das theoretisch bei über 32767 Zeilen zu Problemen führen !
Man verwendet daher in VBA für Zeilenvariablen grundsätzlich Variablen vom Typ LONG - diese können ganzzahlige Werte von -2.147.483.648 bis +2.147.483.647 annehmen, für Zeilnr. bleiben demnach Werte zw. 1 bis (256^4)/2-1 ;-)) !
Gruß, NoNet
Anzeige
AW: =Range("J8:J" & lur )
13.09.2011 20:47:12
Hermann
Hallo NoNet,
auch dir sei Dank für die rasche und präzise Hilfe.
Dass man die Deklarierung für Zeilenvariablen grundsätzlich mit Variablen vom Typ LONG machen sollte, hatte ich zwar aus einem Excel-Buch (v.Bernd Held) noch im Hinterkopf, aber man denkt ja immer realistisch. Und daher hatte ich "schlampigerweise" nur einer Integer-Variablen, die eine Zeilenzahl von max. 32767 aufnehmen kann, verwendet.
Ich gelobe Besserung!
Gruß Hermann

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige