Mittlerweile habe ich mich dazu entschlossen das ich zwei verschiedene Schaltflächen erstelle eine für ForumlarDEU und eine für FormularENG.
Im Anschluss nach dem drucken soll die Excel-Datei automatisch gespeichert werden damit es keine Probleme mit den Codes gibt. (ich hoffe dieser Befehl ist richtig "ActiveWorkbook.Save")
Sub yesnno1()
Dim Max As Long, Spalte As Long, z As Long, Start As Single, p As Byte
Dim code As String, zchn As String, anzahl As Long
Dim Codepos As Range, Codesheet As Worksheet, c As Range
Randomize Timer
Max = 42875
If MsgBox("Druckeinstellungen geändert?", vbYesNo) = vbYes Then
Sheets("FormularDEU").Select
Set Codepos = Sheets("FormularDEU").Range("B3") 'wo im Formular soll der Code stehen?
Set Codesheet = Sheets("Codes") 'wie heißt das Blatt, wo alle bereits
'verwendeten Codes aufgelistet sind?
Do 'Abfrage nach Anzahl
anzahl = Val(InputBox("Wie viele Formulare wollen Sie heute drucken?"))
Loop Until CLng(anzahl) >= 0
'Spalte ermitteln
Set c = Codesheet.Cells.Find(Date)
If c Is Nothing Then
Spalte = Codesheet.Cells(1, Columns.Count).End(xlToLeft).Offset(0, 1).Column
Codesheet.Cells(1, Spalte) = Date
Else
Spalte = c.Column
End If
Else
MsgBox "Druckereigenschaften einstellen auf: " & vbNewLine & "" & vbNewLine & "MyTab - Druckart -> 1-seitig" & vbNewLine & "Basis - Papiermagazin -> Stapelblattanlage" & vbNewLine & "" & vbNewLine & "Richtiges Papier einlegen!"
End If
For z = 1 To anzahl
If Application.CountA(Codesheet.UsedRange) = Max Then Exit For
Start = Timer
Do
If Timer > Start + 30 Then Exit Sub 'Timeout wenn nach 30 Sek. noch
'kein unbenutzter Code gefunden wurde
code = "" 'Code erzeugen
For p = 1 To 3
Do
zchn = Int(Rnd * 42) + 49
Loop Until Chr(zchn) Like "[A-Z]" Or Chr(zchn) Like "[1-9]"
code = code & Chr(zchn)
Next p
Loop Until Codesheet.UsedRange.Find(code) Is Nothing 'Dubletten haben keine Chance
With Codesheet.Cells(Rows.Count, Spalte).End(xlUp).Offset(1, 0)
.NumberFormat = "@"
.Value = code
End With
Codepos.Value = code
' Sheets("FormularDEU").PrintOut 'hab ich als Kommentar markiert weil sich die Druckereinstellungen nicht umstellen lassen
Next z
'MsgBox "Speichern nicht vergessen!"
ActiveWorkbook.Save 'wird automatisch gespeichert nach dem Drucken
End Sub
Kann mir bitte jemand sagen wo ich in dem Makro diesen Teil einfügen muss
Sub FarbeRot()
'
' FarbeRot Makro
'
'
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Font.Bold = True
End Sub
wenn ich die Codes für das FormularENG in rot haben möchte?
Danke!