Hallo René,
zuvor noch ein Nachtrag zu Variante 1: Die automatische Programmcode-Erkennung hat leider den gosub-Befehl zerrissen. Bitte beachte das.
Der folgende Code enthält zusätzliche Kontrollen zur Absicherung gg. Fehler bei evtl Änderungen der Feldvariablen:
Sub testcopy(LArt As String)
Const sht As String = "Dr SZ B_H L_H Et V V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 P_L"
Dim i As Integer, j As Integer, k As Integer, LAw As String, _
lw As Variant, lx As Variant, sn As Variant, x As Worksheet
LAw = "A Del EM Fa FM G IN JM Neu P x1 x2 x4 x5 x6 x7 x8 x9 x10 x11 x12 " & _
"x13 x14 x15 x16 x17 x18 x19 x20 x21 x22 x23 x24 x25 x26 x27 x28 x29 x30 x31"
lx = Array(5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 9, 6, 15, 17, 16, 13, 14, 4, 4, 4, 4, _
4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 12, 10, 10, 10, 8, 8, 8, 8, 8)
sn = Split(sht, " ")
lw = Split(LAw, " ")
With WorksheetFunction
k = .Min(lx)
If k < 1 Or .Max(lx) > UBound(sn) Or UBound(lw) <> UBound(lx) Then
MsgBox "Programmvariablen unstimmig!", vbCritical + vbOKOnly, _
"Interner Fehler"
Exit Sub
End If
End With
For i = 0 To UBound(lw)
If lw(i) = LArt Then
j = lx(i)
Exit For
End If
Next i
If j = 0 Then Exit Sub
Application.DisplayAlerts = False
With ActiveWorkbook
.Sheets(sn(0)).Delete
.Sheets(sn(j)).Visible = True
.Sheets(sn(j)).Copy Before:=Sheets(2)
ActiveSheet.Name = sn(0)
.Sheets(sn(j)).Visible = xlVeryHidden
End With
On j - k GoTo d1, d2, d3, d4, d5, d6, d7, d8, d9, e0, e1, e2, e3
Call druck_etikettenliste(LArt): GoTo ex
d1: Call druck_adr_liste(LArt): GoTo ex
d2: Call druck_adr_vs(LArt): GoTo ex
d3: Call druck_adr_del(LArt): GoTo ex
d4: Call druck_fleiss(LArt): GoTo ex
d5: Call druck_auszeichnung_ehrung(LArt): GoTo ex
d6: Call druck_anmeld_anlass(LArt): GoTo ex
d7: Call druck_helfer_ausstellung(LArt): GoTo ex
d8: Call druck_helfer_lotto(LArt): GoTo ex
d9: Call druck_geburts_eintrittsdaten(LArt): GoTo ex
e0: Call druck_adr_liste(LArt): GoTo ex
e1: Call druck_liste_beitrag(LArt): GoTo ex
e2: Call druck_adr_parus(LArt): GoTo ex
e3: Call druck_präsenzliste(LArt)
ex: Application.DisplayAlerts = True
End Sub
Ansonsten gilt auch hier das zu Variante1 und im Nachtrag Gesagte. Nach dem, was du geschrieben hast, gehe ich davon aus, dass du die Befehlsabfolge nachvollziehst. Ich selbst würde auch keine Fremdcodes einsetzen, die ich nicht verstehe.
Gruß Luc
:-?