Case Anweisung / Leeres Blatt überspringen
06.05.2020 09:48:51
Sascha
Folgendes Problem: ich habe vor kurzem von Franz (fcs) eine tolle Funktion geschrieben bekommen, die verschiedene Dinge für mich ausführt.
Das Programm geht durch die Case Funktion eine bestimmte Auswahl an Worksheets durch und führt eine Operation in jedem Blatt aus. Das klappt auch wunderbar.
Folgender Fehler muss nun aber noch abgefangen werden:
Was, wenn eines der vorher erzeugten Arbeitsblätter der Auswertung keinen Inhalt hat?
Die Case Anweisung sieht wie folgt aus:
Sub Gruppieren() 'Haupt-Makro 'CommandbuttonXXX_Click() 'name des makros anpassen
'Alle Blätter - mit Ausnahmen gruppieren
Dim wkb As Workbook, wks As Worksheet, dateVal As Variant
Dim sPrompt As String
Set wkb = ActiveWorkbook
EingabeDatum:
sPrompt = sPrompt & "Bitte ein gültiges Datum in der Form TT.MM.JJJJ eingeben:"
dateVal = InputBox(sPrompt, "Fälligkeitsdatum", "TT.MM.JJJJ") 'Datum für jedes Blatt
If dateVal = "" Then 'Abgebrochen
Exit Sub
ElseIf IsDate(dateVal) Then
dateVal = CDate(dateVal)
For Each wks In wkb.Worksheets
Select Case wks.Name
Case "Tabelle 1", "Steuerung"
'diese Blätter nicht bearbeiten
Case Else
Call GruppierenEinzeln(wks, dateVal)
End Select
Next
Else
sPrompt = "Eingabe ist kein gültiges Datum" & vbLf
GoTo EingabeDatum
End If
MsgBox "Fertig - Gruppieren"
End Sub
Falls ihr jetzt denkt "Warum ist überhaupt ein Arbeitsblatt ohne Inhalt erzeugt", ein kurzer Abriss, was ich mit dem Programm mache:
1. Importiere CSV Liste mit offenen Posten verschiedener Handelspartner
2. Extrahiere jeden Eintrag gem. des Handelspartners in ein separates Worksheet
3. Berechne Summen zu einem Stichtag in den einzelnen Worksheets
Ich erzeuge pauschal zu Beginn von Punkt 2 die Arbeitsblätter der Handelspartner. In der Regel tauchen auch immer alle Handelspartner im CSV Import auf. Theoretisch könnte es aber auch mal anders sein, daher wäre es gut diesen Fehler abzufangen, in dem er die Worksheets ohne Inhalte (ab Zeile 2, da Zeile 1 immer mit der Tabellenüberschrift befüllt wird) überspringt.
Any ideas?
Danke euch!
Viele Grüße
Sascha