Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Fehler bei Sheets-Select (eines oder mehrere)

Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 10:12:03
Peter
Guten Tag
Beim Aufstarten einer Datei wird der

Sub DatenSchuetzen aufgerufen.
Damit ich die einzelnen Sheets schützen kann, weise ich zuerst die ausgewählten Sheets einer  _
Variable zu und wähle dann nur eine Tabelle aus.
Am Schluss selectiere ich wieder die ursprüngliche Auswahl.
Bei der Zeile varSHTx.Select erhalte ich die Fehlermeldung:
Laufzeitfehler '1004': Die Methode 'Select für das Objekt 'Sheets' ist fehlgeschlagen
Ich sehe nicht, wo das Problem liegt.
Gruss, Peter

Sub DateiSchuetzen()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim varSHTx As Sheets
Set varSHTx = ActiveWindow.SelectedSheets
Sheets(1).Activate        ''' Auswahl Sheet 1, damit allfällige Mehrfachauswahl aufgehoben wird
For Each wks In ThisWorkbook.Worksheets
Select Case wks.Name
Case "LUT", "Anleitung"
Case Else
wks.Protect DrawingObjects:=True, _
contents:=True, _
UserInterfaceOnly:=True, _
Scenarios:=True, Password:=[_PW].Value
wks.EnableSelection = xlNoRestrictions
End Select
Next
varSHTx.Select                            ''' Selektion ursprünglich ausgewähltes Sheet oder  _
Mehrfachauswahl
Application.ScreenUpdating = True
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 10:16:45
Peter
Hallo
Habe jetzt festgestellt, dass das in der Regel erste Sheet des Workbooks ausgeblendet war - nachdem ich dieses eingeblendet habe, läuft der Code.
Meine Fragen: hat das einen Zusammenhang oder ist das "Zufall"?
Wenn, der Fehler damit begründet ist, dass ein Sheet ausgeblendet war: Wie aktiviere ich die erste sichtbare Tabelle?
In meinem Code arbeite ich teils mit Activate, teils mit Select - spielt das hier eine Rolle?
Gruss, Peter

Anzeige
AW: Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 10:45:48
Rudi
Hallo,
um die Blätter zu schützen musst du nicht SELECTen oder aktivieren.
Somit ist
Set varSHTx = ActiveWindow.SelectedSheets
Sheets(1).Activate
varSHTx.Select  

überflüssig.
Gruß
Rudi

AW: Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 10:57:45
Peter
Hallo Rudi
Danke. würde die Sache einfacher machen.
Wenn ich jedoch diese Zeilen auskommentiere, bleibt mir der Code bei
wks.Protect DrawingObjects:=True, _
contents:=True, _
UserInterfaceOnly:=True, _
Scenarios:=True, Password:=[_PW].Value
hängen (wenn ich eine Mehrfachauswahl von Sheets habe).
Gruss, Peter

Anzeige
AW: Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 11:56:38
Rudi
Hallo,
Sub DateiSchuetzen()
Application.ScreenUpdating = False
Dim wks As Worksheet
Dim varSHTx As Sheets
Set varSHTx = ActiveWindow.SelectedSheets
If varSHTx.Count > 1 Then
For Each wks In Worksheets
If wks.Visible Then
wks.Select
Exit For
End If
Next wks
End If
For Each wks In ThisWorkbook.Worksheets
Select Case wks.Name
Case "LUT", "Anleitung"
Case Else
wks.Protect DrawingObjects:=True, _
contents:=True, _
UserInterfaceOnly:=True, _
Scenarios:=True, Password:=[_PW].Value
wks.EnableSelection = xlNoRestrictions
End Select
Next wks
varSHTx.Select ' Selektion ursprünglich ausgewähltes Sheet oder Mehrfachauswahl
Application.ScreenUpdating = True
End Sub

Gruß
Rudi

Anzeige
AW: Fehler bei Sheets-Select (eines oder mehrere)
19.12.2014 14:56:30
Peter

Hallo Rudi
Vielen Dank. Ich habe nochmals eine Verständnisfrage.
In der gleichen Datei habe ich ein Sub "Aufheben"
Die Tabelle "LUT" und "Aufheben" sind nicht passwortgeschützt.
Weshalb erhalte ich keine Fehlermeldung, wenn der Sub Aufheben gestartet wird, der alle Worksheets durchläuft, auch diejenigen ohne Passwortschutz (Worksheets sind eingeblendet).
Gruss, Peter
Sub Aufheben()
Dim wks As Worksheet, myPwd As String, varSHT As Sheets
Application.ScreenUpdating = False
'Set varSHT = ActiveWindow.SelectedSheets
For Each wks In ThisWorkbook.Worksheets
wks.Unprotect Password:=[_PW].Value
Next
'varSHT.Select
Application.ScreenUpdating = True
End Sub


Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Fehler bei Sheets-Select in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Variable für die ausgewählten Blätter erstellen: Zunächst solltest du eine Variable erstellen, die die aktuell ausgewählten Sheets speichert.

    Dim varSHTx As Sheets
    Set varSHTx = ActiveWindow.SelectedSheets
  2. Aktivieren eines spezifischen Sheets: Um sicherzustellen, dass keine Mehrfachauswahl stört, aktiviere ein bestimmtes Blatt.

    Sheets(1).Activate
  3. Schutz für die Blätter aktivieren: Durchlaufe alle Worksheets und schütze sie, außer den, die du nicht schützen möchtest.

    For Each wks In ThisWorkbook.Worksheets
       Select Case wks.Name
           Case "LUT", "Anleitung"
           Case Else
               wks.Protect DrawingObjects:=True, _
               contents:=True, _
               UserInterfaceOnly:=True, _
               Scenarios:=True, Password:=[_PW].Value
       End Select
    Next
  4. Zurück zur ursprünglichen Auswahl: Zum Schluss kannst du die ursprüngliche Auswahl wiederherstellen.

    varSHTx.Select

Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt auf, wenn du versuchst, ein Sheet zu selectieren, das ausgeblendet ist. Stelle sicher, dass alle Sheets, die du verwenden möchtest, sichtbar sind.

  • Unnötige Verwendung von Select und Activate: In vielen Fällen ist es nicht notwendig, ein Sheet zu aktivieren oder zu selectieren, um es zu schützen. Das kann deinen Code vereinfachen und die Ausführung beschleunigen.


Alternative Methoden

  • Direktes Arbeiten mit Objekten: Anstatt sheets.select zu verwenden, kannst du direkt auf das Blatt zugreifen:

    ThisWorkbook.Worksheets("SheetName").Protect
  • Mit If-Bedingungen: Verwende Bedingungen, um sicherzustellen, dass nur sichtbare Sheets bearbeitet werden:

    If wks.Visible Then
       wks.Protect
    End If

Praktische Beispiele

  • Um alle sichtbaren Sheets zu schützen:

    For Each wks In ThisWorkbook.Worksheets
       If wks.Visible Then
           wks.Protect Password:="deinPasswort"
       End If
    Next
  • Um nur ein bestimmtes Sheet zu schützen:

    Worksheets("LUT").Protect Password:="deinPasswort"

Tipps für Profis

  • Vermeide Select: Das Vermeiden von sheets.select und activate macht deinen Code nicht nur schneller, sondern auch robuster.

  • Variablen für häufig genutzte Objekte: Speichere häufig genutzte Objekte in Variablen, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Warum erhalte ich einen Laufzeitfehler bei varSHTx.Select?
Der Fehler tritt auf, wenn das ausgewählte Sheet ausgeblendet ist. Stelle sicher, dass alle Sheets sichtbar sind.

2. Ist es notwendig, Sheets(1).Activate zu verwenden?
In den meisten Fällen ist es nicht notwendig, ein Sheet zu aktivieren. Du kannst direkt mit den Objekten arbeiten, um deinen Code zu vereinfachen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige