Morgen Zusammen,
Vorerst möchste ich sagen, dass ich nicht soviel erfahrung habe mit VBA und glaube das mein Problem/Wunsch leicht zu lösen ist.
Das Makro steht schon und ich glaube man muss nur wenig was ändern .
Das ist aktuell die Formel. wenn ich die Zahl 40 eingebe, wird es immer in 40er schritten ausgedruckt(Weil die Excel Datei mehr als 40 Zahlen hat)
Bsp: 100 Zahlen.
Eingabe: 40
Ergebnis= 1 Blatt 40 Zahlen
2 Blatt 40 Zahlen
3 Blatt 20 Zahlen
Ich würde gerne aber das es so ausgedruckt wird : 1 Blatt 80 Zahlen
2 Blatt 10 Zahlen
3 Blatt 10 Zahlen
Dazu muss ich sagen, dass es manchmal auch mehr Zahlen in der Excel Datei stehen bsp:250 aber es soll trotzdem zuerst 80,10, 10 pro Blatt und der Rest auf den Nächten Blatt ausgedruckt werden.
Also ich würde gerne, selber jedes mal im InputBox entscheiden in welchen Schriten es ausgedruckt werden soll
Ich hoffe man konnte es etwas verstehen.
Formel :
Dim Menge
Dim XXAMin
Dim XXBMax
Dim Runde
Dim RundeI
Dim zahl
Sheets("Blatt1").Select
' setzt Filter um ihn nachher löschen zu können
ActiveSheet.Range("A2:A1000").AutoFilter Field:=1, Criteria1:="<=" & 1000
' Löscht Filter
ActiveSheet.ShowAllData
' Ermittlung der letzten Zeile
Dim Ende As Long
With ActiveSheet
Ende = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
' Löscht bedingte Formatierung in Spalte A
Range("A3:C" & Ende).Select
Selection.FormatConditions.Delete
' Ermittelt Anzahl der Zahlen
KLT = Range("A" & Ende).Value
' Summe der Zahlen pro Runde
Range("H1").Select
ActiveCell.FormulaR1C1 = "=SUBTOTAL(109,R[8]C:R[9999]C)"
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
Menge = InputBox("Bitte Zahl eingeben" & vbCrLf & "Zum Drucken OK wählen", "Drucken", 40)
If Menge = "" Then
GoTo EndPrint
Else
'
Runde = Application.RoundUp((zahl + 10) / Menge, 0)
'Runde = 100
XXAMin = 0
For RundeI = 1 To Runde
Sheets("Blatt1").Select
XXBMax = Menge + XXAMin
ActiveSheet.Range("A2:S" & Ende).AutoFilter Field:=1, Criteria1:="<=" & XXBMax, _
Operator:=xlAnd, Criteria2:=">" & XXAMin
ActiveSheet.Range("A2:S" & Ende).AutoFilter Field:=3, Criteria1:="<=" & XXBMax, _
Operator:=xlOr, Criteria2:="="
XXBMax = Cells(1, 8) + XXAMin
' Hilfsspalte für Schattierung der ersten Spalte je Runde
Columns("Q:Q").Select
Selection.EntireColumn.Hidden = False
Range("Q3:Q" & Cells(Rows.Count, "B").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Cells(1).Select
Range("Q3:Q" & Cells(Rows.Count, "B").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Cells.Select
ActiveCell.FormulaR1C1 = RundeI
If XXBMax - XXAMin <> 1 Then
Selection.FillDown
End If
Columns("Q:Q").Select
Selection.EntireColumn.Hidden = True
' ----------------------
Range("F1").Select
ActiveCell.FormulaR1C1 = "batt2 - Runde " & RundeI
Selection.Font.Bold = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Sheets("Blatto").Select
ActiveSheet.Range("A2:S" & Ende).AutoFilter Field:=1, Criteria1:="<=" & XXBMax, _
Operator:=xlAnd, Criteria2:=">" & XXAMin
Range("F1").Select
ActiveCell.FormulaR1C1 = "batt3 - Runde " & RundeI
Selection.Font.Bold = True
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
If XXBMax = zahl Then
GoTo EndPrint
End If
XXAMin = XXBMax
Next RundeI
End If
EndPrint:
Sheets("Blatto").Select
' setzt Filter um ihne nachher löschen zu können
ActiveSheet.Range("A2:A1000").AutoFilter Field:=1, Criteria1:="<=" & 1000
' Löscht Filter
ActiveSheet.ShowAllData
Sheets("Blatt1").Select
' setzt Filter um ihne nachher löschen zu können
ActiveSheet.Range("A2:A1000").AutoFilter Field:=1, Criteria1:="<=" & 1000
' Löscht Filter
ActiveSheet.ShowAllData
'
If Menge = "" Then
GoTo EndSub
Else
Range("A3:A" & Ende).Select
Range("A3").Activate
'Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ISTGERADE(AUFRUNDEN(A3 /" & Menge & "; 0))"
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=ISTGERADE(Q3)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.14996795556505
End With
End If
EndSub:
|