Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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

Nochmal Frage Makro Ende ...

Nochmal Frage Makro Ende ...
Kurt
Hallo zusammen,
ich habe gerade festgestellt, die Summen in der Spalte 19 + 32(habe dazu genommen) ,
werden soweit reingesetzt über die letzte Summenzeile hinweg.
Die letzte Summenzelle ist in der Spalte I zu ermitteln oder für die Spalte 32 die letzte Summenzelle in
der Spalte V .

Sub SummenFormeln_setzen()
Dim lngRow As Long, lngLastRow As Long, lngStartRow As Long
Dim lngStartCol As Long, lngLastCol As Long
With ActiveSheet
lngStartRow = 5 'erste Datenzeile
lngStartCol = 9 'erste Datenspalte
lngLastRow = Application.Max(lngStartRow, .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
lngLastCol = 19 'Application.Max(lngStartCol, .UsedRange.SpecialCells(xlCellTypeLastCell).   _
_
_
Column)
lngStartRow = 4
For lngRow = lngStartRow To lngLastRow
If .Cells(lngRow, 9).Borders(xlEdgeTop).Weight = -4138 Then
With .Range(.Cells(lngRow, lngStartCol), .Cells(lngRow, lngLastCol))
.FormulaR1C1 = "=SUM(R[-" & lngRow - lngStartRow & "]C:R[-1]C)"
.Borders(xlEdgeBottom).LineStyle = xlDouble
End With
lngStartRow = lngRow + 1
Else
'   .Cells(lngRow, 19).FormulaR1C1 = "=Sum(RC9:RC18)"           '"=SUM(RC[-10]:RC[-1])"
.Cells(lngRow, 19).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
If ActiveSheet.Range("U4") = "" Then
Else
.Cells(lngRow, 32).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
End If
End If
Next
End With
End Sub

mfg kurt P
AW: Nochmal Frage Makro Ende ...
22.09.2011 19:54:22
Gerd
Hallo Kurt,
dann hast Du wohl 2 verschiedene Long-Variablen, die Du so
lngRowLast19 = ActiveSheet.Cells(Rows.Count, 10).End(xlUp).Row
lngRowLast32 = ActiveSheet.Cells(Rows.Count, 22).End(xlUp).Row
oder so
lngRowLast19 = ActiveSheet.Columns(10).SpecialCells(xlCellTypeLastCell).Row
lngRowLast32 = ActiveSheet.Columns(22).SpecialCells(xlCellTypeLastCell).Row
ermitteln kannst; noch einzubauen in Application.Max.
Deinen Zeilenversatz kann ich leider nicht nachvollziehen.
Gruß Gerd
Hallo Gerd
22.09.2011 20:53:47
Kurt
Guten Abend Gerd,
wieso klappt es nicht ?
Dim lngRow As Long, lngLastRow As Long, lngStartRow As Long
Dim lngStartCol As Long, lngLastCol As Long, lngRowLast As Long
With ActiveSheet
lngStartRow = 5 'erste Datenzeile
lngStartCol = 9 'erste Datenspalte
lngLastRow = Application.Max(lngStartRow, .UsedRange.SpecialCells(xlCellTypeLastCell).Row)
lngLastCol = 19 'Application.Max(lngStartCol, .UsedRange.SpecialCells(xlCellTypeLastCell). _
Column)
'lngRowLast9 = 9 'letzte Datenzeile
'lngRowLast22 = 22 'letzte Datenzeile
'lngRowLast = ActiveSheet.Columns(9).SpecialCells(xlCellTypeLastCell).Row
'lngRowLast = ActiveSheet.Columns(22).SpecialCells(xlCellTypeLastCell).Row
lngRowLast = ActiveSheet.Cells(Rows.Count, 10).End(xlUp).Row
lngRowLast = ActiveSheet.Cells(Rows.Count, 22).End(xlUp).Row
lngStartRow = 4
For lngRow = lngStartRow To lngLastRow
If .Cells(lngRow, 9).Borders(xlEdgeTop).Weight = -4138 Then
With .Range(.Cells(lngRow, lngStartCol), .Cells(lngRow, lngLastCol))
.FormulaR1C1 = "=SUM(R[-" & lngRow - lngStartRow & "]C:R[-1]C)"
.Borders(xlEdgeBottom).LineStyle = xlDouble
End With
lngStartRow = lngRow + 1
Else
' .Cells(lngRow, 19).FormulaR1C1 = "=Sum(RC9:RC18)" '"=SUM(RC[-10]:RC[-1])"
.Cells(lngRow, 19).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
If ActiveSheet.Range("U4") = "" Then
Else
.Cells(lngRow, 32).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
End If
End If
Next
End With
mfg kurt p
Anzeige
So klappt es auch ! oder ?
22.09.2011 21:20:08
Kurt
Hallo Gerd,
so habe ich mal eingesetzt:
.Cells(Rows.Count, 19).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
.Cells(Rows.Count, 32).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
es klappt oder gibt es Probleme ?
mfg kurt p
So geht es leider nicht
22.09.2011 21:38:06
Kurt
Hallo Gerd,
nee excel hängt sich auf.
mfg kurt p
Hier mit Beispieldatei
23.09.2011 08:39:49
Kurt
Guten Morgen Gerd,
zum besseren Verständnis anbei die Musterdatei.
Hinweis:
Die länge der Summenformel in der Spalte ist sehr unterschiedlich, hier ist die letzte belegte
Zelle z.b. "S51"
Dann habe ich in der Spalte "V:AE" ebenfalls das gleiche an Zahlen, hier sollte ebenfalls die
letzte belegte Zelle z.b. aktuelle "AF57" .
Ich hoffe das erklärt meine zusätzliche Zeile im Makro, habe wieder gelöscht !
https://www.herber.de/bbs/user/76734.xls
mfg kurt p
Anzeige
Vielleicht kann "Sepp" nochmal helfen, bitte !
23.09.2011 14:01:13
Kurt
Hallo zusammen,
ich brauch dringend eine Lösung, würde mich um Unterstützung gern
freuen,
danke im Voraus.
mfg kurt p
Bitte Josef Ehrensberger schau doch nochmal...
23.09.2011 19:34:01
Kurt
Hallo Sepp,
das ist die Musterdatei, das wird soweit alles durchgeführt aber unten werden
Nullen angehängt.
Das gleiche bräuchte ich jetzt auch für RECHTS, ist aber nicht schlimm wenn es nicht klappt,
https://www.herber.de/bbs/user/76744.xls
mfg kurt P
AW: Bitte Josef Ehrensberger schau doch nochmal...
23.09.2011 20:06:46
Josef

Hallo Kurt,
bevor wir weitermachen, solltest du vielleicht die genauen Vorgaben beschreiben.
Bleibt es bei den beiden Blöcken, oder kommt dann vielleicht morgen ein weiterer dazu?
Sind die Blöcke immer gleich breit?
Ist der Abstand zwischen den Blöcken immer gleich?
Wozu überhaupt ein Makro? Die paar Summen-Formeln sind doch in einer Minute eingetragen.

« Gruß Sepp »

Anzeige
Erst mal Danke wenn Du mir hilfst
23.09.2011 20:21:50
Kurt
Guten Abend Sepp,
es kommen keine weiteren Blöcke dazu.
Die Blöcke sind so wie in der Musterdatei !
Innerhalb der Blöcke sind die Anzahl der Zeilen unterschiedlich, mal
10, mal 20 aber wie in der Musterdatei klappt es ja.
Die Daten fülle ich bzw. kommen aus einer anderen Datei.
Nach der letzten Zeile sollte dann Schluss sein, leider werden immer noch Nullen
kopiert, weiß nicht Warum.
Wenn es zuviel Arbeit ist, dann bitte nur die Nullen in der letzten Spalte
wegmachen.
Ansonsten würde ich mich freuen, wenn es RECHTS auch klappen würde.
Dann ist Schluss,
mfg kurt p
Anzeige
AW: Erst mal Danke wenn Du mir hilfst
23.09.2011 20:30:53
Josef

Hallo Kurt,
dann so.

Sub test()
  Dim lngRow As Long, lngLastRow As Long, lngStartRow As Long
  Dim vntStartCol() As Variant, lngIndex As Long
  Dim lngRowLast As Long
  
  With ActiveSheet
    vntStartCol = Array(9, 22) 'Datenspaltespalten (die erste(n) Spalten jedes Blockes)
    
    For lngIndex = 0 To UBound(vntStartCol)
      lngStartRow = 5 'erste Datenzeile
      lngLastRow = Application.Max(lngStartRow, .Cells(.Rows.Count, vntStartCol(lngIndex)).End(xlUp).Row + 1)
      For lngRow = lngStartRow To lngLastRow
        If .Cells(lngRow, vntStartCol(lngIndex)).Borders(xlEdgeTop).Weight = -4138 Then
          With .Range(.Cells(lngRow, vntStartCol(lngIndex)), .Cells(lngRow, vntStartCol(lngIndex) + 10))
            .FormulaR1C1 = "=SUM(R[-" & lngRow - lngStartRow & "]C:R[-1]C)"
            .Borders(xlEdgeBottom).LineStyle = xlDouble
          End With
          lngStartRow = lngRow + 1
        Else
          .Cells(lngRow, vntStartCol(lngIndex) + 10).FormulaR1C1 = "=SUM(RC[-10]:RC[-1])"
        End If
      Next
    Next
  End With
  
End Sub



« Gruß Sepp »

Anzeige
Das ist Super Geil aber unter der Spalte
23.09.2011 21:09:02
Kurt
Hallo Sepp,
läuft einwandfrei auch der 2. Block.
Aber in der Spalte S + AF ganz zum Schluß unter dem letzten doppel Unterstrich
steht jeweils ein Null.
Warum auch immer, ich habe überhaupt keine Ahnung und blicke nicht durch,
mfg Kurt P
AW: Das ist Super Geil aber unter der Spalte
23.09.2011 21:25:47
Josef

Hallo Kurt,
das passiert aber nur, wenn du den Code ein zweites Mal laufen lässt. Dann wird natürlich eine Zeile zu viel genommen, weil die Summenzeile natürlich mitgezählt wird.

« Gruß Sepp »

Anzeige
Hallo Sepp, DU hast mal wieder Recht -)
23.09.2011 21:49:07
Kurt
Guten Abend,
Du hast natürlich RECHT.
Habe gerad mal die letzten Reihe gelöscht und siehe da alles klappt,
tausend Dank nochmals für die Unterstützung !!!
mfg kurt P

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige