Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Zeile einfügen und addieren

VBA Zeile einfügen und addieren
30.10.2014 11:01:52
sara
Hallo zusammen,
habe folgende Tabelle:
Artikelnr -----Preis1-----Preis2
1101-----------1.000 ----- 1.000
1102-----------1.000 ----- 1.000
1113-----------1.000 ------ 1.000
1204----------- 200 ------ 200
1205----------- 200 ------ 200
1301
1302
1401
etc...
Nach jeder Artikel-Gruppe (11,12,13,..) soll eine Zeile eingefügt und die Preise der Artikelgruppe addiert werden. Das Gruppieren und Zeile einfügen klappt, aber wie kann VBA anhand der Artikelgruppe die Preise addieren?
Das ist mein Code:

Sub LeerzeilenEinfügen()
Dim altNr As String
Dim anzLZ As Long
Dim letzteZeile As Long
Dim neuNr As String
Dim startZeile As Long
Dim ws As Worksheet
Dim zeile As Long
startZeile = 6    ' Ab Zeile 6 prüfen
anzLZ = 1         ' Eine Leerzeile einfügen
Set ws = ActiveSheet
altNr = Left$(ws.Cells(startZeile, "B"), 2)   'die ersten zwei Werte prüfen
zeile = startZeile
Do Until IsEmpty(ws.Cells(zeile, "B"))
neuNr = Left$(ws.Cells(zeile, "B"), 2)      ' die ersten zwei werte prüfen
If neuNr  altNr Then
' Leerzeilen einfügen
ws.Rows(zeile).Resize(anzLZ).Insert
'zeile = zeile + anzLZ
altNr = neuNr
' Name "Subtotal" einfügen und Fett
ws.Cells(zeile, "B") = "Subtotal"
ws.Cells(zeile, "B").Font.Bold = True
' Subtotal in Spalte C und D addieren - Hier ist das eigentliche Problem
ws.Cells(zeile, "C").FormulaLocal = "=SUMME(SUMMEWENN(B5:B12;{""1101"";""1102"";""1113""} _
;C5:C12))"
ws.Cells(zeile, "c").Font.Bold = True
ws.Cells(zeile, "d").FormulaLocal = "=SUMME(SUMMEWENN(B5:B12;{""1101"";""1102"";""1113""} _
;C5:C12))"
ws.Cells(zeile, "d").Font.Bold = True
End If
zeile = zeile + 1
Loop
End Sub

Bin ich auf dem richtigen Weg oder soll ich den Code umschreiben?
Vielen Dank...

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile einfügen und addieren
30.10.2014 11:16:21
Hajo_Zi
mache eine Extra Spalt wo 11;12;13 steht, Daten, Befehlsgruppe Gliederung, Teilergebnis

AW: VBA Zeile einfügen und addieren
30.10.2014 12:34:24
sara
Danke für die schnelle Rückmeldung. Aber das muss ein Makro sein. Mein Makro prüft ob die ersten ziffern der Artikelnr identisch sind, dann wird eine neue Zeile eingefügt. Kann man nicht an dieser Stelle sagen: und addiere die dazugehörigen Werte aus den Zellen rechts daneben (Spalte C)?
Vielen Dank.

AW: VBA Zeile einfügen und addieren
30.10.2014 12:52:13
Hajo_Zi
ich baue keine Datei nach.
Option Explicit
Sub LeerzeilenEinfügen()
Dim altNr As String
Dim anzLZ As Long
Dim letzteZeile As Long
Dim neuNr As String
Dim startZeile As Long
Dim ws As Worksheet
Dim zeile As Long
startZeile = 6    ' Ab Zeile 6 prüfen
anzLZ = 1         ' Eine Leerzeile einfügen
Set ws = ActiveSheet
altNr = Left$(ws.Cells(startZeile, "B"), 2)   'die ersten zwei Werte prüfen
zeile = startZeile
Do Until IsEmpty(ws.Cells(zeile, "B"))
neuNr = Left$(ws.Cells(zeile, "B"), 2)      ' die ersten zwei werte prüfen
If neuNr  altNr Then
' Leerzeilen einfügen
ws.Rows(zeile).Resize(anzLZ).Insert
'zeile = zeile + anzLZ
altNr = neuNr
' Name "Subtotal" einfügen und Fett
ws.Cells(zeile, "B") = "Subtotal"
ws.Cells(zeile, "B").Font.Bold = True
' Subtotal in Spalte C und D addieren - Hier ist das eigentliche Problem
ws.Cells(zeile, "C").FormulaLocal = _
"=SUMME(B" & startZeile & ":B" & zeile - 1 & ")"
ws.Cells(zeile, "c").Font.Bold = True
ws.Cells(zeile, "d").FormulaLocal = _
"=SUMME(C" & startZeile & ":C" & zeile - 1 & ")"
ws.Cells(zeile, "d").Font.Bold = True
startZeile = zeile + 1
End If
zeile = zeile + 1
Loop
End Sub

Anzeige

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige