Anzeige
Archiv - Navigation
1512to1516
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 Division

VBA Division
16.09.2016 13:11:12
Berg.Legende
Hallo,
ich muss eine Division per VBA durchführen.
A B C
100 1 =1/100
200 1 =1/200
Leer leer =Wert ""
50 2 =2/50
... ... =...
Wenn ich schreibe:

Sub Dividieren()
dim i as integer
For i = 1 To 100
Cells(i, 3).Value = Cells(i, 2).Value / Cells(i, 1).Value
Next i
End Sub

dann hört er bei der Leerzeile auf und bringt einen Leerlauffehler.
Wie mach ich des dass er in die Leerzeile "" nichts reinschreibt aber dann fortlaufend weiter dividiert?
Vorab vielen Dank!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Division
16.09.2016 13:24:22
Berg.Legende
Danke konnte mir selber helfen.
AW: VBA Division
16.09.2016 13:42:20
Daniel
Hi
da gibt's mehrere Möglichkeiten.
du kannst eine Prüfung einbauen, ob in den beiden Zellen auch Zahlen stehen, wobei du dann auch prüfen solltest ob der Divisor 0 ist.
For i = 1 To 100
If IsNumeric(Cells(i, 1).value) and IsNumeric(Cells(i, 2).value and Cells(i, 1).Value  0 then
Cells(i, 3).Value = Cells(i, 2).Value / Cells(i, 1).Value
End If
next

Aber es ist in VBA nicht besonders sinnvoll, Zellen einzeln per Schleife zu bearbeiten.
Das hier kannst du mit einer Formel viel einfacher lösen und dabei auch gleich die Fehler ohne aufwendige Prüfung ausbügeln (WennFehler).
man kann auch die Formel per VBA einfügen und dann bei Bedarf die Formeln durch die Werte erstzten:
With Range("C1:C300")
.FormulaR1C1 = "=IFERROR(RC2/RC1,"""")"
.Formula = .Value
end with

das läuft nicht nur schneller durch, du brauchst auch keine Variablen und beim Testen im Einzelstep ist es viel angenehmer, wenn man sich nicht durch die Schleife durchklicken muss.
eine weitere Möglichkeit wäre diese, aber sie funktioniert nur für die 4 Grundrechenarten:
du kannst die Werte kopieren und beim Einfügen dann die Werte mit den bereits in den Zellen stehenden Werten verrechnen. Das ist eine Optionn beim Inhalte-Einfügen.
auch die geht per Code:
Range("B1:B100").Copy
Range("C1").PasteSpecial xlPasteValues
Range("A1:A100").Copy
Range("C1").PasteSpecial xlPasteValues, operation:=xlDivide
gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige