Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
676to680
676to680
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Problem mit Select case / for each next
08.10.2005 16:46:16
DJB
Hallo zusammen, ich habe folgendes Problem:
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

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Klappt leider nicht
08.10.2005 17:17:32
Jörg
Hatte auf Absenden geklickt und nichts ist passiert.... hatte aber wohl doch geklappt.
Sorry für die vielen unnötigen Antworten.... (kann ich die löschen ?)
Zu meinem Problem und dem Vorschlag von Matthias (Danke nochmal):
Jetzt bekomme ich die Meldung "Typen unverträglich" im Bezug auf:
If wks.Name = "RELAX-CUP" Or "Zielerreichung" Or "Start" Or "Absatzliste" Or "ZahlenSIAIDA" Or "Verkäuferranking" Then
wks ist als worksheet deklariert
Sollte dann wks.name nicht automatisch vom String-Typ sein?
oder muss ich das irgendwie deklarieren? Dim wks.name as String klappt natürlich nicht...
Gruß Jörg B.
Anzeige
AW: Klappt leider nicht
08.10.2005 17:27:14
Matthias
Hallo Jörg,
sorry, das hatte ich übersehen:

If wks.Name = "RELAX-CUP" Or wks.Name = "Zielerreichung" Or _
wks.Name = "Start" Or wks.Name = "Absatzliste" Or wks.Name = "ZahlenSIAIDA" Or _
wks.Name = "Verkäuferranking" Then

Gruß Matthias
eider immer noch nicht... aber ich komme weiter..
08.10.2005 17:37:36
Jörg
Hi,
Danke jetzt komme ich schonmal durch die If-Geschichte durch....
jetzt meckert er, dass die "ClearContets-Methode des Rage-Objektes" fehlerhaft ist ....
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
Anzeige
AW: eider immer noch nicht... aber ich komme weite
08.10.2005 17:50:04
Matthias
Hallo Jörg,
bei welchem Blatt?

With wks
msgbox wks.Name
.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

AW: eider immer noch nicht... aber ich komme weite
08.10.2005 18:00:11
Bünnagel
Was brauchste denn ?
Den Tabellennamen?
Also die If-Abfrage läuft durch, und wenn er dann auf einen gültigen (bei dem er Löschen soll) trifft, kommt die Fehlermeldung...
Gruß Jörg
Tabellen sind in der Form : "Mitarbeitername_Team" benannt.
Anzeige
AW: eider immer noch nicht... aber ich komme weite
08.10.2005 18:42:21
Matthias
Hallo Jörg,
sorry, keine Idee mehr.
Gruß Matthias
AW: eider immer noch nicht... aber ich komme weite
08.10.2005 18:47:34
Fred
Hi,
fast zu einfach: Blattschutz? Verbundenen Zellen?
mfg Fred
AW: eider immer noch nicht... aber ich komme weite
08.10.2005 19:14:53
Jörg
For Each wks In ThisWorkbook.Worksheets
wks.Visible = True
Next wks
For Each wks In ThisWorkbook.Worksheets
If wks.Name = "RELAX-CUP" Or wks.Name = "Zielerreichung" Or wks.Name = "Start" Or wks.Name = "Absatzliste" Or wks.Name = "ZahlenSIAIDA" Or wks.Name = "Verkäuferranking" Or wks.Name = "Daten" Then



Else
Application.ScreenUpdating = False
With Worksheets(wks.Name)
MsgBox wks.Name
.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
End If
Next wks
ich hab's jetzt mal so probiert.... mit derselben Meldung.... :-(
Blattschutz ist an, Betroffene Zellen sind aber "frei", also nicht gesperrt.
verbunden auch nicht....
bin ratlos....
Gruß Jörg B.
Anzeige
AW: eider immer noch nicht... aber ich komme weite
08.10.2005 19:30:42
Fred
Hi,
las doch mal was hoch.
mfg Fred
Ratlos
08.10.2005 19:51:30
Jörg
Beim Vorbereiten der Tabelle für's Hochladen, habe ich den betroffenen Code mal in eine leere Datei kopiert, hier klappt das,
ich kann die Datei leider nicht komplett hochladen, weil da Kundendaten mit drin sind.
Ich glaube, ich weiss aber jetzt wo das Problem liegt, kann es aber nicht lösen ;-)
Die Problematik / das Vorgehen ist folgende:
- Datei wird geöffnet
- Tabelle "Start" wird geöffnet (so etwas wie eine Übersichtsseite) und alle anderen ausgeblendet
- Mitarbeiter kann Knopf drücken (Passwortabfrage-Fenster erscheint)
- Anhand des Passwortes wird ein bestimmter Code ausgeführt
Bei Benutzer-Passwörtern öffnet sich die entsprechende Tabelle des nutzers
Bei einem Spezialpasswort wird die Tabelle zurückgesetzt (also alle Eingaben gelöscht)
Das Problem ist wahrscheinlich das der entsprechende Code (wegen der Passwort-Abfrage mit "*"-Feldern) in einer USER-Form steht....
Ist also ziemlich umfangreich, das Ganze...
Mfg
Jörg B.
Anzeige
AW: Ratlos
08.10.2005 19:58:06
Matthias
Hallo Jörg,
auch in einer Userform funktioniert dieser Code:

Private Sub CommandButton1_Click()
With ActiveSheet
.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
End Sub

Gruß Matthias
AW: Ratlos
08.10.2005 20:02:52
Jörg
Merkwürdig...
Aber ich muss doch die Tabelle normalerweise nicht vorher mit
Worksheets(wks.Name).Activate aktivieren, oder ?
Das habe ich vor ein paar Jahren noch gemacht, als ich mit dem Makro-Rekorder gearbeitet hab ;-)
Irgendwo habe ich anscheinend eine Denk-Blockade....
MfG
Jörg
Anzeige
AW: Ratlos
08.10.2005 20:12:16
Jörg
Wenn ich's genau nehme wird das ganze aus einer Prozedur bzw. Funktion aufgerufen...

Private Sub CommandButton1_Click()
Dim passwort$
passwort = UserForm1.text_passwort.Text
Call passwortpruefen(passwort)
Unload Me
End Sub

und in dieser
Sub passwortpruefen(passwort$)
Dim wks As Worksheet
Meldung = "Passwort falsch!"
Select Case UserForm1.text_passwort.Text

Case "hier steht das das etsprechende Passort für's Löschen"
darunter steht dann der Code der nicht klappt.....
antwort = MsgBox("Achtung!! Alle eingetragenen Daten werden jetzt zurückgesetzt." & Chr(13) & "Sind Sie sicher?", vbYesNo, "Achtung!")
If antwort = 6 Then

Application.ScreenUpdating = False
'Einblenden
For Each wks In ThisWorkbook.Worksheets
wks.Visible = True
Next wks
For Each wks In ThisWorkbook.Worksheets
If wks.Name = "RELAX-CUP" Or wks.Name = "Zielerreichung" Or wks.Name = "Start" Or wks.Name = "Absatzliste" Or wks.Name = "ZahlenSIAIDA" Or wks.Name = "Verkäuferranking" Or wks.Name = "Daten" Then



Else
Application.ScreenUpdating = False
With Worksheets(wks.Name)
MsgBox wks.Name
.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
End If
Next wks
und so weiter....
Gruß Jörg B.
Anzeige
AW: Ratlos
08.10.2005 21:18:08
Jörg
Danke an Fred und Matthias.....
habe es gelöst...
ein .Activate an richtiger Stelle hat das Problem gelöst.....
With Worksheets(wks.Name)
.Activate
.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
End If
Next wks
Gruß Jörg B.
AW: Ratlos
08.10.2005 21:38:33
Fred
Hi,
mag sein, dass es jetzt funktioniert, ist aber garantiert nicht die Ursache!
mfg Fred
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige