über einen User habe ich VBA-Code bekommen, den ich nach meinen Bedürfnissen erweitert bzw. geändert habe. Es geht darum, daß ich Angebote, Aufträge und Rechnungen immer in einer bestimmten Anzahl ausdrucken muß.
Über Kontrollkästchen kann ich entsprechend anwählen, was ausgedruckt wird.
Für ein Angebot brauche ich normalerweise (!!!) das Original und 3 Kopien, für einen Auftrag ebenfalls und für eine Rechnung das Original und 7 Kopien. Die Kopien werden entsprechend farbig und mit Text "KOPIE ..." gekennzeichnet.
Das Ganze sieht so aus:
http://img184.imageshack.us/img184/6186/screenshotexcellt4.jpg
Der VBA-Code sieht so aus:
Sub Drucken()
Dim objWks As Worksheet, strAktiverDrucker As String, objZelleKopie As Range
Dim lngFarbeKopie As Long
On Error GoTo Fehler
Set objWks = Worksheets("Angebot")
Set objZelleKopie = objWks.Range("F11") 'Zelle zur Kennzeichnung der Kopie
lngFarbeKopie = objZelleKopie.Interior.ColorIndex 'Originalfarbe merken
'Drucken
strAktiverDrucker = Application.ActivePrinter 'aktiven Druckermerken
'Drucker für Ausgabe setzen, falls nicht der Aktive Drucker genommen werden soll
Application.ActivePrinter = "Samsung CLP-300 Series auf Ne00:"
If objWks.Shapes("Kontrollkästchen 5").ControlFormat.Value = 1 Then
'Kunden-Exemplar
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 25").ControlFormat.Value = 1 Then
'Kopie - Kunde
objZelleKopie = "K O P I E"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 8").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 6 'gelb
objZelleKopie = "KOPIE - Produktion"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 29").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 3 'rot
objZelleKopie = "KOPIE - Tourenplanung"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 28").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 40 'hellgrau
objZelleKopie = "KOPIE - Ablage/Koffer"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 31").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Provisionsabrechnung"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 32").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Steuerberater"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 34").ControlFormat.Value = 1 Then
'Kopie - Produktion
objZelleKopie.Interior.ColorIndex = 4 'grün
objZelleKopie = "KOPIE - Zahlungsverkehr"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 6").ControlFormat.Value = 1 Then
'Kopie - Vertrieb
objZelleKopie.Interior.ColorIndex = 37 'hellblau
objZelleKopie = "KOPIE - Vertrieb"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 36").ControlFormat.Value = 1 Then
'Kopie - Vertrieb
objZelleKopie.Interior.ColorIndex = 33 'blau
objZelleKopie = "KOPIE - Lieferschein etc."
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 7").ControlFormat.Value = 1 Then
'Exemplar - Allgemeine Ablage
objZelleKopie.Interior.ColorIndex = 33 'blau
objZelleKopie = "KOPIE - Gesamt-Ordner"
' objWks.PrintPreview
objWks.PrintOut
End If
If objWks.Shapes("Kontrollkästchen 9").ControlFormat.Value = 1 Then
'PDF-Datei erstellen
'FarbeZelle zurücksetzen
objZelleKopie.Interior.ColorIndex = lngFarbeKopie
objZelleKopie.MergeArea.ClearContents
'PDF-Drucker auswählen
Application.ActivePrinter = "Acrobat PDFWriter auf LPT1:"
objWks.PrintOut
End If
Fehler:
If Err.Number 0 Then
MsgBox "Fehler Nr. " & Err.Number & " ist aufgetreten!" & vbLf & Err.Description
End If
'FarbeZelle zurücksetzen
If Not objZelleKopie Is Nothing Then
objZelleKopie.Interior.ColorIndex = lngFarbeKopie
objZelleKopie.MergeArea.ClearContents
End If
'Drucker zurücksetzen
If strAktiverDrucker "" Then Application.ActivePrinter = strAktiverDrucker
End Sub
Soweit, so gut .....
Nun wäre es aber noch optimaler, wenn die Kontrollkästchen automatisch markiert würden.
Beispiel für Angebote ... markiert werden müßten die Kontrollkästchen:
Kunde 1, Ablage Koffer, Vertrieb und Gesamt-Ordner
Beispiel für Aufträge ... markiert werden müßten die Kontrollkästchen:
Kunde 1, Ablage Koffer, Vertrieb, Produktion, Tourenplanung
Gibt es da irgendeine Lösung?
In Zelle B24 steht entweder "Angebot", "Auftrag" oder "Rechnung".
Vielleicht könnte man da mit VBA-Code eine Schleife aufbauen, die dann die entsprechenden Haken in die Kontrollkästchen setzt.
Voraussetzung müßte allerdings sein, daß ich trotzdem manuell noch weitere Haken setzen kann oder aber auch wieder Haken entfernen kann.
Es grüßt
Junker