Problem mit Select case / for each next
08.10.2005 16:46:16
DJB
Ich möchte gerne in einem Makro in Abhängigkeit vom Tabellennamen gewisse Bereiche der jeweiligen Tabelle löschen.
Da nicht alle Tabellen gleich aufgebaut sind, muss ich also gewisse Tabellen sozusagen vom "Lösch-Makro" ausklammern. Ich hatte das bis jetzt durch eine select case Anweisung unter expliziter Angabe des Tabellennames gelöst.
Jetzt wollte ich das ganze etwas eleganter gestalten und bei allen Tabellen den Code ausführen, die nicht bestimmte Namen haben.
Mit dem Code klappt das aber nicht, da bei der next-Anweisung ja aus der Select case anweisung rausgesprungen wird. Ich habe auch schon aus verzweiflung mit "If-Then-Else" und "Elseif" experimentiert mit dem Ergebnis, dass jedesmal ein Kompilierungsfehler "If then ohne endif" bzw "Select case ohne end select" erscheint.
Hier der relevante Teil meines Codes (Select case etc. steht auch im code, habe ich aber nicht mit kopiert)/ Das erste "Case" gehört zu einer Passwort-Abfrage anhand der ein bestimmter Code ausgeführ wird. Das mit den "OR" in der IF-Abfrage war ein letzter verzweifelter Versuch. Der relevante Teil beginnt bei "For Each wks.....":
Case "alleslöschen"
antwort = MsgBox("Achtung!! Alle eingetragenen Daten werden jetzt zurückgesetzt." & Chr(13) & "Sind Sie sicher?", vbYesNo, "Achtung!")
If antwort = 6 Then
Application.ScreenUpdating = False
Dim Neuer_Dateiname
Neuer_Dateiname = Application.GetSaveAsFilename(InitialFileName:="Absatzerfassung_KW" & Sheets("Zielerreichung").Range("A1").Value, fileFilter:="Excel-Arbeitsmappe, *.xls")
If Neuer_Dateiname = False Then Exit Sub
ActiveWorkbook.SaveAs FileName:=Neuer_Dateiname
'Einblenden
For Each wks In ThisWorkbook.Worksheets
wks.Visible = True
Next wks
For Each wks In ThisWorkbook.Worksheets
If wks.Name = "RELAX-CUP" Or "Zielerreichung" Or "Start" Or "Absatzliste" Or "ZahlenSIAIDA" Or "Verkäuferranking" Then
Next wks
Else
Application.ScreenUpdating = False
With wks
.Range("B4:G8").ClearContents
.Range("B10:G16").ClearContents
.Range("B24:G30").ClearContents
.Range("B32:G38").ClearContents
.Range("B40:G46").ClearContents
.Range("B22:G22").ClearContents
.Range("B20:G20").ClearContents
.Range("B18:G18").ClearContents
End With
Hat da jemand eine Lösung/Vorschlag ?
Danke und MfG
DJB