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

Ausgeblendetes Tabellenblatt per Makro ansprechen

Forumthread: Ausgeblendetes Tabellenblatt per Makro ansprechen

Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 16:47:33
Fififox
Hallo zusammen,
ich bin ein wirklicher VBA-Neuling und habe folgendes Problem: Bei Ausführung meiner Makros muss auf passwortgeschützte ausgeblendete Tabellen zugegriffen werden. Das funktioniert leider nicht, da ich anscheinend Select u.ä. verwende. Habe jetzt schon probiert mit Range.Copy den Select-Anteil zu reduzieren, bekomme da aber immer einen BEZUG!-Fehler.
Mein Makro sieht so aus:
Worksheets("Gefilterte Listen").Activate
Range("V5:V82").Select
Selection.Copy
Worksheets("Kopie FAAA").Activate
Range("A1:A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A1").Select
Worksheets("Gefilterte Listen").Activate
Range("V1").Select
End Sub
Danach sollen alle Werte alphabetisch geordnet werden:
Worksheets("Kopie FAAA").Select
Range("A1").Select
Dim rngZelle As Range, Auswahl As Range
For Each rngZelle In Columns("A:A").Cells
If rngZelle.Value "" Then
If Auswahl Is Nothing = True Then
Set Auswahl = rngZelle
Else
Set Auswahl = Union(Auswahl, rngZelle)
End If
End If
Next rngZelle
Auswahl.Select
Selection.Sort Key1:=ActiveCell, Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Selection.Copy
Worksheets("Personal").Activate
Range("D2:D81").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("G21").Select
Worksheets("Kopie FAAAanwesend alphabetisch").Activate
Range("B1").Select
Application.CutCopyMode = False
End Sub
Mit dem "Reinigen" der Makros komme ich nicht zurecht. Habe auch gelesen, dass man die betroffenen Tabellen per Makrobefehl vor den Berechnungen einschalten und wieder ausschalten (mit Passwortschutz) kann. Bekomme ich aber leider auch nicht hin. Kann mir da jemand helfen?
Vielen Dank im Voraus für eure HIlfe.
Fififox
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 16:49:55
Hajo_Zi
Arbeite mit
With Worksheets("Gefilterte Listen")
Punkt vor Cells und Range nicht vergessen.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 17:46:12
Fififox
Hallo Hajo,
vielen Dank für die schnelle Antwort.
Gruß
Fififox
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 18:06:42
Fififox
Hallo Hajo,
habe es probiert:
Worksheets("Gefilterte Listen").Range("V5:V82").Copy
Worksheets("Kopie FAAAanwesend alphabetisch").Range("A1:A78").PasteSpecial Paste:=xlPasteValues
With Worksheets("Kopie FAAA").Range("A1:A78")
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub
Funktioniert leider nicht, wahrscheinlich verstehe ich die Sache mit "With" nicht...
Vielen Dank für die Unterstützung...
Fififox
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 19:36:51
Hajo_Zi
bei mir geht es, ich habe es mal mit verbundene Zellen getestet.
Gruß Hajo
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 20:40:56
Werner
Hallo,
hier mal dein angepasster Code:
Public Sub aaa()
Dim loLetzte As Long
Application.ScreenUpdating = False
With Worksheets("Gefilterte Listen")
.Range("V5:V82").Copy
Worksheets("Kopie FAAA").Range("A1").PasteSpecial Paste:=xlPasteValues
With Worksheets("Kopie FAAA")
.Range("A1").PasteSpecial Paste:=xlPasteValues
With .Columns(1)
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
.Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range(.Cells(2, 1), .Cells(loLetzte, 1)).Copy
Worksheets("Personal").Range("D2").PasteSpecial Paste:=xlPasteValues
End With
End With
End With
Application.CutCopyMode = False
Worksheets("Kopie FAAAanwesend alphabetisch").Activate
End Sub
Damit ist aber noch nicht das "Problem" mit dem Blattschutz gelöst.
Dazu fehlen Infos. Wieviele Blätter hat die Datei? welche sind per Blattschutz geschützt? Mit oder ohne Passwort?
Am besten mal deine Mappe hier hochladen.
Gruß Werner
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
25.11.2018 20:42:39
Fififox
Hallo Werner,
vielen Dank. Hab es hinbekommen und ohne "Select" kann ich auch das Makros laufen lassen, wenn für die Arbeitsblattstruktur ein Passwortschutz besteht. Danke für die schnelle und kompetente Unterstützung. Ich hätte jedoch noch eine Frage: Ich habe eine Dropdownliste erstellt, in der die ausgewählten Namen in den anderen Dropdownfeldern mit gleichem Listenbezug nicht mehr zur Verfügung stehen. Soll heißen: 5 Dropdownfelder mit Listenbezug "A,B,C,D,E". Wenn man "A" auswählt, steht danach nur noch "B,C,D,E" zur Verfügung. Jetzt soll die Liste aber immer oben beginnen. Da die Namensliste, um die es eigentlich geht immer unterschiedlich lang ist und ich Leereinträge vemeiden möchten (bisher einfach eine sicher größere Zellenzahl als Liste definiert), suche ich nach einer Lösung, bei der nur die Zellen mit Wert in einer Spalte für die Dropdownliste berücksichtigt werden. Bisher habe ich überhaupt keinen Ansatz. Hast du eine Idee?
Vielen Dank im Voraus
Fififox
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
26.11.2018 11:27:56
Werner
Hallo,
sorry, aber im Moment verstehe ich nur Bahnhof. Liegt vermutlich daran, dass ich deine Datei nicht kenne. Nur aufgrund deinem Beschreibungsversuch ist das für mich nicht nachvollziehbar.
Besser bitte deine Datei hochladen und dort mal beschreiben was du willst.
Gruß Werner
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 17:15:04
Daniel
Hi
wenn ausgeblendete Blätter bearbeitet werden sollen und diese dazu auch ausgeblendet bleiben sollen, dann ist das Arbeiten mit Selection. und .Select natürlich tabu.
wenn du Zellen auf einem ausgeblendeten Blatt bearbeiten willst, musst stattdessen vollständig referenzieren, dh. aus-
Worksheets("Gefilterte Listen").Activate
Range("V5:V82").Select
Selection.Copy
Worksheets("Kopie FAAA").Activate
Range("A1:A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
wird
Worksheets("Gefilterte Listen").Range("V5:V82").Copy
Worksheets("Kopie FAAA").Range("A1").PasteSpecial Paste:=xlPasteValues
weitere Infos dazu hier: https://www.online-excel.de/excel/singsel_vba.php?f=78
beachte, dass du das Tabellenblatt vor JEDEM Range, Cells, Columns oder Rows hinzufügen musst.
insbesondere bei den Cells innerhalb von Range(Cells, Cells) oder bei den Keys in der .Sort-Funktion vergisst man das gerne mal, aber auch da muss immer vor jedem Zellbezug die Tabellenblattangabe stehen.
Gruß Daniel
Anzeige
AW: Ausgeblendetes Tabellenblatt per Makro ansprechen
23.11.2018 17:44:32
Fififox
Hallo Daniel,
vielen Dank für die schnelle Antwort. Ich werde es gleich mal probieren.
Gruß
Fififox
;
Anzeige
Anzeige

Infobox / Tutorial

Ausgeblendete Tabellenblätter mit VBA ansprechen


Schritt-für-Schritt-Anleitung

Um mit Excel VBA auf ausgeblendete Tabellenblätter zuzugreifen, musst du sicherstellen, dass du die richtigen Referenzen verwendest. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Tabellenblatt aktivieren: Stelle sicher, dass du das ausgeblendete Tabellenblatt aktivierst. Das geht mit:

    Worksheets("Gefilterte Listen").Visible = xlSheetVisible
  2. Daten kopieren: Verwende direkte Referenzen anstelle von Select oder Activate. Beispiel:

    Worksheets("Gefilterte Listen").Range("V5:V82").Copy
    Worksheets("Kopie FAAA").Range("A1").PasteSpecial Paste:=xlPasteValues
  3. Formatieren: Setze die Formatierungen, ohne Select zu verwenden:

    With Worksheets("Kopie FAAA").Range("A1:A78")
       .HorizontalAlignment = xlGeneral
       .VerticalAlignment = xlCenter
       .WrapText = False
    End With
  4. Tabellenblatt wieder ausblenden:

    Worksheets("Gefilterte Listen").Visible = xlSheetHidden

Häufige Fehler und Lösungen

  1. BEZUG!-Fehler: Dieser Fehler tritt häufig auf, wenn du versuchst, Zellen von einem nicht aktiven oder ausgeblendeten Blatt zu kopieren. Stelle sicher, dass du die richtigen Referenzen nutzt, wie in der Schritt-für-Schritt-Anleitung beschrieben.

  2. Fehlende .Visible-Einstellung: Wenn du versuchst, auf ein ausgeblendetes Tabellenblatt zuzugreifen, ohne es sichtbar zu machen, wird es nicht funktionieren. Setze das Blatt zuerst auf xlSheetVisible.

  3. Select-Befehle: Vermeide Select und Activate, um die Performance zu verbessern und Fehler zu vermeiden. Verwende stattdessen direkte Referenzen.


Alternative Methoden

Wenn du mit ausgeblendeten Tabellenblättern in Excel VBA arbeitest, kannst du folgende Alternativen ausprobieren:

  • Direkte Zellreferenzierung: Anstatt Bereiche zu kopieren, kannst du auch direkt Werte zuweisen:

    Worksheets("Kopie FAAA").Range("A1").Value = Worksheets("Gefilterte Listen").Range("V5").Value
  • Verwenden von Arrays: Lade die Daten in ein Array, bevor du sie in das Zielblatt schreibst. Das kann die Geschwindigkeit verbessern und Fehler reduzieren:

    Dim dataArray As Variant
    dataArray = Worksheets("Gefilterte Listen").Range("V5:V82").Value
    Worksheets("Kopie FAAA").Range("A1").Resize(UBound(dataArray, 1), UBound(dataArray, 2)).Value = dataArray

Praktische Beispiele

Hier ist ein einfaches Beispiel, um ein ausgeblendetes Tabellenblatt zu bearbeiten:

Public Sub BeispielMakro()
    ' Sichtbarkeit des Blattes ändern
    Worksheets("Gefilterte Listen").Visible = xlSheetVisible

    ' Daten kopieren
    Worksheets("Gefilterte Listen").Range("V5:V82").Copy
    Worksheets("Kopie FAAA").Range("A1").PasteSpecial Paste:=xlPasteValues

    ' Formatierung anwenden
    With Worksheets("Kopie FAAA").Range("A1:A78")
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
    End With

    ' Blatt wieder ausblenden
    Worksheets("Gefilterte Listen").Visible = xlSheetHidden
End Sub

Dieses Beispiel zeigt, wie du auf ein ausgeblendetes Tabellenblatt zugreifen und die Daten kopieren kannst.


Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was viele Fehler vermeiden kann.
  • Nutze Fehlerbehandlung: Implementiere On Error Resume Next oder On Error GoTo für eine robuste Fehlerverarbeitung.
  • Kommentare: Kommentiere deinen Code zur besseren Nachvollziehbarkeit, besonders wenn du mit mehreren Blättern arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich ein ausgeblendetes Tabellenblatt einblenden?
Du kannst ein ausgeblendetes Tabellenblatt mit folgendem Code einblenden:

Worksheets("Tabellenblattname").Visible = xlSheetVisible

2. Was ist der Unterschied zwischen xlSheetVisible und xlSheetHidden?
xlSheetVisible zeigt das Blatt an, während xlSheetHidden es ausblendet. Es gibt auch xlSheetVeryHidden, das es noch schwieriger macht, das Blatt sichtbar zu machen.

3. Kann ich auf mehrere ausgeblendete Blätter gleichzeitig zugreifen?
Ja, du kannst eine Schleife verwenden, um durch eine Liste von Blättern zu iterieren und ihre Sichtbarkeit oder Daten zu ändern.

4. Wie kann ich sicherstellen, dass mein VBA-Code effizienter läuft?
Vermeide Select und arbeite mit direkten Zellreferenzen. Schalte ScreenUpdating und Calculation aus, bevor du umfangreiche Datenoperationen durchführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige