PDA

Vollständige Version anzeigen : Addierung per Makro


maik-anfä
22.02.2008, 08:02
Hallo, versuche gerade ein Makro zu schreiben......
Ich habe in 2 Spalten zwei Zahlen die in einer 3. Spalte zusammenaddiert werden müssen. WEnn ich das mit dem Makro aufzeichne, tut er das nur bis zur Stelle wo ich die Formel runterziehe.
Was ich aber will ist das er automatisch erkennt ob in Spalte 1 oder 2 eine Zahl steht und diese dann demenstprechend automatisch addiert. er soll also bis Zeile "x" addieren". Muss ich da mit ne Schleife arbeiten? wenn ja, was genau muss ich da eingeben.....sorry ist vielleicht ne dumme frage.....aber ich bin in VBA anfänger.

Hatte folgendes aufgezeichnet:

Sub Makro3()

Range("E8").Select
ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
Range("E8").Select
Selection.AutoFill Destination:=Range("E8:E10"), Type:=xlFillDefault
Range("E8:E10").Select
Range("E12").Select
End Sub

Gruß
Marco

jinx
22.02.2008, 08:08
<font size="2" face="Century Gothic">Moin, marco,

die letzte durchgängig gefüllte Zeile in der Spalte A feststellen und im Code einsetzen:

Sub Makro3()
With Range("E8")
.FormulaR1C1 = "=RC[-2]+RC[-1]"
.Select
End With
Selection.AutoFill Destination:=Range("E8:E" & Range("A8").End(xlDown).Row), Type:=xlFillDefault
End Sub
Und in der einzutragenden Formel würde ich den möglichen Fehler abfangen.

Ansonsten wirklich eine Schleife, die die jeweiligen Zellen prüft und ggf. eine Formel einträgt.</font>

Maikk
22.02.2008, 09:26
das ist ja das problem.....
ich wollte es automatisieren....und das zweite problem......wie erstelle ich so eine schleife :-(

jinx
22.02.2008, 09:36
<font size="2" face="Century Gothic">Moin, marco,

so z.B.:

Sub BeispielSchleife()
Dim lngLastRow As Long
Dim lngCounter As Long
'letzte Zeile von unten feststellen
lngLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
'Schleife von 1 bis letzte Zeile
For lngCounter = 1 To lngLastRow
'auf 2 Zahlen in A und B achten
If WorksheetFunction.Count(Range(Cells(lngCounter, 1).Address, Cells(lngCounter, 2).Address)) = 2 Then
'Formel eintragen
Cells(lngCounter, 5).Formula = "=" & Cells(lngCounter, 1).Address & "+" & Cells(lngCounter, 2).Address
End If
Next lngCounter
Application.ScreenUpdating = True
End Sub</font>

Marcoo
22.02.2008, 10:06
perfekt, funktioniert einwandfrei!!!! bin begeistert....vielen danke nochmal....

Marcoo
22.02.2008, 10:19
Bzw. ein problem hätte ich noch.
Ich habe ein feste Zelle wo dann die Ergebnisse aufsummiert werden.
Also Zelle A1 bildet die Summe von den einzelnen Zeilenaddierung.

angenommen das Ergebnis ist 100. Wie programmiere eine msg box, die nach auslösung des makros einen Text anzeigt + das Ergebniss der Zelle A1.
Die Msg Box soll rein informativ angezeigt werden und via OK-Button weg geklickt werden können.

Wenn ich dies noch hätte, wäre das super.

gruß
marco

jinx
22.02.2008, 10:26
<font size="2" face="Century Gothic">Moin, marco,

per se hat die "einfache" MsgBox ohne weiter Angaben immer nur die OK-Schaltfläche:

Sub BeispielSchleife()
Dim lngLastRow As Long
Dim lngCounter As Long
'letzte Zeile von unten feststellen
lngLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False
'Schleife von 1 bis letzte Zeile
For lngCounter = 1 To lngLastRow
'auf 2 Zahlen in A und B achten
If WorksheetFunction.Count(Range(Cells(lngCounter, 1).Address, Cells(lngCounter, 2).Address)) = 2 Then
'Formel eintragen
Cells(lngCounter, 5).Formula = "=" & Cells(lngCounter, 1).Address & "+" & Cells(lngCounter, 2).Address
'///hier MsgBox, wenn Wert jeder Zeile angezeigt werden soll
End If
Next lngCounter
Application.ScreenUpdating = True
MsgBox "Der Wert der Zelle A1 ist: " & Range("A1").Text, vbInformation, "Hinweis für " & Application.UserName
End Sub
Ich habe ~.Text statt ~.Value verwendet - sollte in der Zelle z.B. ein formatiertes Datum stehen.</font>