Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

FillDown oder AutoFill über variablen Range

FillDown oder AutoFill über variablen Range
15.01.2008 14:59:59
Thomas
Hallo VBA-Profis,
folgendes Makro habe ich nun fast so weit entwickelt, dass es so funktioniert wie ich es mir vorstelle.
Leider fehlt mir das Wissen zum krönenden Abschluss.
Wie zu erkennen wird hier in der ersten freien Spalte in der ersten Zeile das Wort "Stückzahl" eingetragen. In der direkt darunter liegenden Zelle erfolgt der Eintrag "1".
Nun sollte die "1" mit der Funktion nach unten ausfüllen (FillDown) entsprechend eingetragen werden.
Da ich das Makro variabel gestalten möchte kann ich hier keinen fixen Range eingeben sondern muss diesen von der Spalte der "Stückzahl" abhängig machen.
Hier liegt auch das eigentliche Problem, denn nach Aufnahme des entsprechenden Makros über den Recorder und das Austauschen des Range druch
wks.range(cells(intRow, intColumn), cells(intRowlast, intColumnlast)).select
Beginnt der Debugger und ich bin mit meinen VBA - Kenntnissen am Ende.
Vielen Dank schon mal!!!
Viele Grüße,
Thomas

Sub Stückzahl_1_verfoll()
' stückzahl Makro
' Makro am 07.01.2008 von thomas.stock aufgezeichnet
Dim intRow As Integer 'inRow Reihenvariable
Dim intColumn As Integer 'intColumn Spaltenvariable
Dim intRowlast As Integer 'intRowlast letzte Reihe
Dim intColumnlast As Integer 'intColumnlast letzte Spalte
Worksheets(1).Range("1:1").Find("", LookIn:=xlValues).Select
ActiveCell.FormulaR1C1 = "Stückzahl"
intColumn = ActiveCell.Column
intRow = ActiveCell.Row
intRow = intRow + 1
Cells(intRow, intColumn).Select
ActiveCell.FormulaR1C1 = "1"
ActiveCell.SpecialCells(xlLastCell).Select
intColumnlast = ActiveCell.Column
intRowlast = ActiveCell.Row
intRowlast = intRowlast - 1
wks.Range(Cells(intRow, intColumn), Cells(intRowlast, intColumnlast)).Select
Selection.FillDown
'Range("BH3").Select
'Selection.FillDown
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: FillDown oder AutoFill über variablen Range
15.01.2008 16:58:00
fcs
Hallo Thomas,
du hast die Objekt-Variable wks nicht per Set wks=Worksheets(1) gesetzt. Deshalb kommt es zum Makroabruch.
Da du eh nur im aktiven Blatt Aktionen ausführst kannst du "wks." am Zeilenanfang auch weglassen.
Etwas eleganter und schneller ist folgendes Makro, das die gleichen Aktionen durchführt. Insbesondere werden auch die überflüssigen Select-Anweisungen vermieden.

Sub Stückzahl_1_verfoll()
' stückzahl Makro
' Makro am 07.01.2008 von thomas.stock aufgezeichnet
Dim intRowlast As Integer 'intRowlast letzte Reihe
Dim intColumnlast As Integer 'intColumnlast letzte Spalte
Dim wks As Worksheet, Zelle As Range
Set wks = Worksheets(1)
With wks
Set Zelle = .Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1)
Zelle.Value = "Stückzahl"
Zelle.Offset(1, 0) = 1
intColumnlast = .Cells.SpecialCells(xlCellTypeLastCell).Column
intRowlast = .Cells.SpecialCells(xlCellTypeLastCell).Row - 1
.Range(Zelle.Offset(1, 0), Cells(intRowlast, intColumnlast)).FillDown
End With
End Sub


Gruß
Franz

Anzeige
Dim lngRowlast As Long
15.01.2008 17:06:55
Besser
oT

AW: Dim lngRowlast As Long
15.01.2008 17:40:00
fcs
Da hat Anonymus recht; dann gibt es keine Probleme in Tabellen mit mehr als 2^15 Datenzeilen.
Gruß
Franz

crossposting spotlight oT
15.01.2008 16:59:14
cross
ot

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige