451 Aufrufe
Gefragt in Tabellenkalkulation von

Hallo liebe Forenmitglieder

Habe eine Frage zu Excel VBA

Ich habe in Zelle L29 eine Zahl stehen (z.B. 12000) von der ich einen Zellenfilldown machen möchte. Es soll von dieser Zahl immer der Wert 2000( steht in Zelle J30) abgezogen werden bis einer der Filldownzellen den Wert 0 besitzt. Dann Abbruch des Filldowns und msgbox Ausgabe das der Wert 0 erreicht wurde.

Habe dazu bisher folgenden Makrocode  (teils mit dem Makrorecorder) erstellt:

Private Sub CommandButton5_Click()
Dim Anschaffungskosten As Range
Dim Summe As Range
Dim Start As Range
Dim Cells As Range

Set Anschaffungskosten = ActiveSheet.Range("J29")
Set Summe = ActiveSheet.Range("J30")
Set Start = ActiveSheet.Range("L29")

Start = Anschaffungskosten
Start.Offset(1, 0).Select
ActiveCell.FormulaR1C1 = "=R[-1]C-2000"
ActiveSheet.Range("L30").Select
Do
Selection.AutoFill Destination:=Range("L30:L40"), Type:=xlFillDefault
ActiveSheet.Range("L30:L40").Select
Loop Until Selection.Cells.AutoFill = 0

End Sub

Problem 1: Wie kriege ich die Do Until-Schleife so programmiert, dass mein Filldown bei der Zahl 0 aufhört?

Problem 2: Wie kann ich den Filldownbereich variabel gestalten, da sich die Anzahl der Zellen bis der Wert auf 0 steht ändert

Hoffe, das Mir jemand beim ändern des Makros helfen kann

1 Antwort

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
 
Beste Antwort

Hallo Mathias,

schau dir mal den folgenden Code an:

Sub Minus()
Dim lngZahl As Long
Dim lngMinus As Long
Dim lngZeile As Long

'Startwert
lngZahl = Range("L29").Value
'Abzug
lngMinus = Range("J30").Value
'Startzeile
lngZeile = 30

'Schleife so lange ausführen, bis Zahl kleiner 0 ist
Do Until lngZahl - lngMinus < 0
  'neuen Wert für Zahl berechnen
  lngZahl = lngZahl - lngMinus
  'Wert in Spalte K schreiben
  Cells(lngZeile, 11) = lngZahl
  'auch möglich: Range ("K" & lngZeile) = lngZahl
  'Einfügezeile erhöhen
  lngZeile = lngZeile + 1

Loop

End Sub

Gruß

M.O.

...