Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Set Worksheet variable aktivieren /deakt

Set Worksheet variable aktivieren /deakt
26.02.2023 19:23:11
Richi
Hallo Zusammen
Möchte mit unten angefügtem Code folgendes erreichen, nur funktioniert das nicht.
Will nur ein Worksheet definieren, welches ich innerhalb eines Loops variabel benutzen kann, weil ich immer die selben Aktionen ausführen möchte.
------------------------------------------
Sub Tabellenblätter_variabel()
Dim wb As Workbook
Dim ws As Worksheet
Dim i As Integer
Dim Tabelle as Long
Set wb = ThisWorkbook
For i = 1 To Worksheets.Count
Tabelle = wb.Worksheets(i).Name
Set ws = wb.Worksheets("""&Tabelle&""")
ws.Cells(10.10).Select
'.......weitere Aktionen......
'........am Ende soll ws dealloziert werden um im nächsten loop wieder mit neuem Namen alloziert werden.
Next i
End Sub

Geht das überhaupt?
Liebe Gruess
Richi
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Set Worksheet variable aktivieren /deakt
26.02.2023 19:47:41
RPP63
Moin!
Abenteuerlich ist dies:
Dim Tabelle as Long
[…]
Tabelle = wb.Worksheets(i).Name
(Schließlich kann der Text der .Name-Eigenschaft kaum in einen Long umgewandelt werdem)
Ich habe zwar fast nichts verstanden, reibe aber mal kurz an der Glaskugel:
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
  Select Case Ws.Name
    Case "Sonderfall": 'Mache dies
    Case Else: 'Mache das für alle anderen
  End Select
Next
Gruß Ralf
Anzeige
AW: Set Worksheet variable aktivieren /deakt
26.02.2023 21:49:38
Richi
Hallo Ralf
Besten Dank für deine Hilfe. Mit.... for Each ws schreibe... ich in alle Tabellen. Sollen nur die eingeblendeten sein.
Meine Vorstellung ist, dass ich innerhalb des Loops mit Sheet oder Worksheet aktionen ausführen kann.
Beispiel:
- Sheets("aufgelöst aus wb.Worksheets(i).Name").cells(10.10).Select
Sheets("xyz").cells(10.10).select
oder so....
- Worksheet ("aufgelöst aus wb.Worksheets(i).Name").Select
Set ws = wb.Worksheets("aufgelöst aus wb.Worksheets(i).Name")
ws.Cells(10.10).Select
Gruss
Richi
Anzeige
AW: Set Worksheet variable aktivieren /deakt
27.02.2023 01:11:53
Piet
Hallo
für sichbare Sheets kannst du den unteren Code nehmen. Unklar ist mir was du erreichen wiist?
Wenn du ein Sheet, und dann eine Zelle selektierst, geschiet weiter nichts! Keine weitere Aktion!
Was willst du denn genau machen, welche weitere Aktion/en soll es danach geben?
mfg Piet
  • Sub test()
     Dim Ws As Worksheet
     For Each Ws In ThisWorkbook.Worksheets
       If Ws.Visible = True Then
          'deine Aktion
          Ws.Select
          Cells(10, 1).Select
       End If
     Next
    End Sub

  • Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Setze eine Arbeitsblatt-Variable in VBA


    Schritt-für-Schritt-Anleitung

    Um eine Arbeitsblatt-Variable in VBA zu setzen, musst du die richtige Syntax verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

    1. Deklaration der Variablen: Stelle sicher, dass du die Arbeitsblatt-Variable korrekt deklarierst. Das geht so:

      Dim ws As Worksheet
    2. Zuweisung des Arbeitsblatts: Nutze Set, um die Arbeitsblatt-Variable einem bestimmten Arbeitsblatt zuzuweisen. Zum Beispiel:

      Set ws = ThisWorkbook.Worksheets("Sheet1")
    3. Aktionen ausführen: Jetzt kannst du mit der Variable ws Aktionen durchführen, wie z. B. Zellen auswählen oder Werte ändern:

      ws.Cells(10, 1).Value = "Test"
    4. Schleifen durch Arbeitsblätter: Wenn du durch alle Arbeitsblätter in der Arbeitsmappe iterieren möchtest, kannst du eine Schleife verwenden:

      Dim wb As Workbook
      Set wb = ThisWorkbook
      For Each ws In wb.Worksheets
         ' Deine Aktionen hier
      Next ws

    Häufige Fehler und Lösungen

    1. Typkonflikt bei der Zuweisung: Wenn du versuchst, Tabelle als Long zu deklarieren, um den Namen des Arbeitsblatts zu speichern, wird ein Fehler angezeigt. Verwende stattdessen:

      Dim Tabelle As String
    2. Fehlende Sichtbarkeit: Wenn du versuchst, ein nicht sichtbares Arbeitsblatt zu bearbeiten, wird dein Code möglicherweise nicht wie erwartet funktionieren. Überprüfe den Sichtbarkeitsstatus:

      If ws.Visible = xlSheetVisible Then
         ' Aktionen hier
      End If

    Alternative Methoden

    Wenn du eine Arbeitsblatt-Variable auf andere Weise zuweisen möchtest, gibt es verschiedene Ansätze:

    • Direkte Zuweisung: Du kannst auch die ActiveSheet-Eigenschaft verwenden:

      Set ws = ActiveSheet
    • Zufälliges Arbeitsblatt auswählen: Um ein zufälliges, sichtbares Arbeitsblatt auszuwählen, kannst du Folgendes verwenden:

      For Each ws In ThisWorkbook.Worksheets
         If ws.Visible Then
             ' Aktionen hier
             Exit For ' Beende die Schleife nach dem ersten sichtbaren Arbeitsblatt
         End If
      Next ws

    Praktische Beispiele

    Hier sind einige praktische Beispiele zur Verwendung der Set Worksheet-Variable:

    1. Werte in Zellen setzen:

      Dim ws As Worksheet
      Set ws = ThisWorkbook.Worksheets("Daten")
      ws.Cells(1, 1).Value = "Beispiel"
    2. In einer Schleife durch alle Arbeitsblätter iterieren:

      Dim ws As Worksheet
      For Each ws In ThisWorkbook.Worksheets
         If ws.Visible Then
             ws.Cells(1, 1).Value = "Aktiv"
         End If
      Next ws

    Tipps für Profis

    • Nutze Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.
    • Verwende With-Anweisungen, um den Code lesbarer zu machen:
      With ws
         .Cells(1, 1).Value = "Test"
         .Cells(2, 1).Value = "Weitere Daten"
      End With
    • Bei der Arbeit mit großen Datenmengen kann es hilfreich sein, die Bildschirmaktualisierung vorübergehend auszuschalten:
      Application.ScreenUpdating = False
      ' Dein Code hier
      Application.ScreenUpdating = True

    FAQ: Häufige Fragen

    1. Wie deklariere ich eine Arbeitsblatt-Variable korrekt?
    Du kannst eine Arbeitsblatt-Variable mit folgendem Code deklarieren:

    Dim ws As Worksheet

    2. Was passiert, wenn ich ein nicht sichtbares Arbeitsblatt auswähle?
    Wenn du versuchst, mit einem nicht sichtbaren Arbeitsblatt zu arbeiten, wird dein Code möglicherweise nicht ausgeführt. Stelle sicher, dass das Arbeitsblatt sichtbar ist.

    3. Kann ich Variablen innerhalb einer Schleife zurücksetzen?
    Ja, du kannst die Variable innerhalb der Schleife zurücksetzen, indem du sie einfach neu zuweist oder die Schleife mit Next beendest.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige