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

Worksheet Activate funktioniert nicht

Forumthread: Worksheet Activate funktioniert nicht

Worksheet Activate funktioniert nicht
Peter
Liebe Forumsteilnehmer
Heute muss ich Euch mit vielen Fragen nerven. Ich arbeite mit Excel 2003. Excel 2003 hat ja bekanntlich bei der bedingten Formatierung nur 3 Bedingungen zur Verfügung. In meiner Datei brauche ich aber 4 Bedingungen. Daher habe ich eine Lösung über VBA gemacht:
Public Sub bf()
Dim bereich As Range
Dim rngZelle As Range
Set bereich = Worksheets("Test").Range("b6:b759")
For Each rngZelle In bereich
Select Case rngZelle.Value
Case Is = "Haus"
rngZelle.Interior.ColorIndex = 49
rngZelle.Font.Color = vbWhite
Case Is = "Baum"
rngZelle.Interior.ColorIndex = 6
rngZelle.Font.Color = vbBlack
Case Is = "Strasse"
rngZelle.Interior.ColorIndex = 3
rngZelle.Font.Color = vbWhite
Case Is = "Auto"
rngZelle.Interior.ColorIndex = 10
rngZelle.Font.Color = vbWhite
Case Is = ""
rngZelle.Interior.ColorIndex = xlNone
End Select
Next
End Sub
Die Prozedur funktioniert einwandfrei. Ich möchte nun, dass die Prozedur über die worksheet. _ activate Methode bei jeder Aktivierung einer Tabelle ausgeführt wird. Habe die Prozedur beim entsprechenden Tabellenblatt unter

Private Sub Worksheet_Activate eingefügt. Beim Verlassen und wieder Aktivieren des  _
Tabellenblattes passiert aber rein gar nichts. Hab auch schon application.EnableEvents auf true gesetzt sowohl beim Öffnen der Datei als auch auf dem Tabellenblatt. Hat leider alles nichts gebracht.
Habt Ihr auch hier eine Idee?
Vielen Dank und ist sicher heute das letzte Problem von mir ;-)
Lieber Gruss
Peter


		
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Worksheet Activate funktioniert nicht
18.07.2012 14:11:41
Matze,Matthias
Hallo Peter,
öffters hier heute...grins, viel Spaß beim basteln
'In das Tabbellenblatt
Private Sub Worksheet_Activate()
Call Faerben
End Sub
'In ein MOdul
Option Explicit
Sub Faerben()
Dim bereich As Range
Dim rngZelle As Range
Set bereich = Tabelle1.Range("b6:b759") 'Anpassen der TABELLE
For Each rngZelle In bereich
Select Case rngZelle.Value
Case Is = "Haus"
rngZelle.Interior.ColorIndex = 49
rngZelle.Font.Color = vbWhite
Case Is = "Baum"
rngZelle.Interior.ColorIndex = 6
rngZelle.Font.Color = vbBlack
Case Is = "Strasse"
rngZelle.Interior.ColorIndex = 3
rngZelle.Font.Color = vbWhite
Case Is = "Auto"
rngZelle.Interior.ColorIndex = 10
rngZelle.Font.Color = vbWhite
Case Is = ""
rngZelle.Interior.ColorIndex = xlNone
End Select
Next
End Sub Gruß Matze
Anzeige
AW: Worksheet Activate funktioniert nicht
18.07.2012 14:24:15
Peter
Hallo Matze
Das wars. Hat perfekt funktioniert. Komisch ist, dass ich diesen Weg zuvor schon ausprobiert habe allerdings mit dem Unterschied, dass ich die Prozedur ohne call also nur mit dem Prozedurnamen aufgerufen habe. Dies funktioniert normalerweise.
Du hast meinen Tag gerettet. Jetzt geniesse ich noch das schöne Wetter.
Lieber Gruss aus der Schweiz
Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Worksheet Activate in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

Um die Worksheet_Activate-Methode in Excel VBA korrekt zu nutzen, kannst du die folgenden Schritte befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Finde das entsprechende Tabellenblatt: In der Projektansicht auf der linken Seite, klicke doppelt auf das Tabellenblatt, bei dem du die Aktivierung implementieren möchtest.

  3. Füge den Aktivierungs-Code hinzu: Verwende den folgenden Code, um die Prozedur zu erstellen:

    Private Sub Worksheet_Activate()
       Call Faerben
    End Sub
  4. Erstelle die Farbprozedur: Gehe zu einem Modul (oder erstelle ein neues) und füge den folgenden Code ein:

    Sub Faerben()
       Dim bereich As Range
       Dim rngZelle As Range
       Set bereich = Worksheets("Test").Range("b6:b759")
       For Each rngZelle In bereich
           Select Case rngZelle.Value
               Case Is = "Haus"
                   rngZelle.Interior.ColorIndex = 49
                   rngZelle.Font.Color = vbWhite
               Case Is = "Baum"
                   rngZelle.Interior.ColorIndex = 6
                   rngZelle.Font.Color = vbBlack
               Case Is = "Strasse"
                   rngZelle.Interior.ColorIndex = 3
                   rngZelle.Font.Color = vbWhite
               Case Is = "Auto"
                   rngZelle.Interior.ColorIndex = 10
                   rngZelle.Font.Color = vbWhite
               Case Is = ""
                   rngZelle.Interior.ColorIndex = xlNone
           End Select
       Next
    End Sub
  5. Teste die Prozedur: Wechsle zurück zu Excel und aktiviere das Tabellenblatt, um zu sehen, ob die Farben entsprechend geändert werden.


Häufige Fehler und Lösungen

  • Fehler: vba worksheet activate not working
    Lösung: Stelle sicher, dass die application.EnableEvents-Eigenschaft auf True gesetzt ist. Füge dies in den Code ein, um sicherzustellen, dass die Ereignisse aktiviert sind:

    Application.EnableEvents = True
  • Fehler: worksheet.activate wird nicht aufgerufen
    Lösung: Überprüfe den Namen des Tabellenblatts in der Set bereich = Worksheets("Test")-Zeile. Der Name muss exakt mit dem Tabellennamen übereinstimmen.


Alternative Methoden

Falls du die Worksheet_Activate-Methode nicht verwenden möchtest, kannst du auch die Workbook_SheetActivate-Ereignisprozedur in der ThisWorkbook-Klasse verwenden. Hier ein Beispiel:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Test" Then
        Call Faerben
    End If
End Sub

Diese Methode löst die Prozedur aus, wenn ein beliebiges Blatt aktiviert wird und überprüft, ob es das gewünschte Blatt ist.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele für die Verwendung der activate worksheet-Methode:

  • Dynamische Formatierung: Ändere die Formatierung basierend auf dem Inhalt der Zellen, wie im oben genannten Beispiel.
  • Datenüberprüfung: Führe beim Aktivieren des Blattes eine Datenüberprüfung durch, um sicherzustellen, dass die Daten korrekt sind.

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft dir, Fehler zu vermeiden und den Code übersichtlicher zu gestalten.
  • Verwende Debugging-Tools wie Debug.Print, um den Status von Variablen während der Ausführung zu überprüfen und so Fehler schneller zu finden.

FAQ: Häufige Fragen

1. Warum funktioniert mein vba worksheet.activate nicht?
Es könnte sein, dass die Ereignisse nicht aktiviert sind. Stelle sicher, dass Application.EnableEvents = True gesetzt ist.

2. Kann ich die worksheet.activate-Methode auch in Excel 2003 verwenden?
Ja, die Methode ist in Excel 2003 und späteren Versionen verfügbar. Achte darauf, dass dein Code korrekt implementiert ist.

3. Was ist der Unterschied zwischen worksheet.activate und worksheet.select?
worksheet.activate aktiviert das Blatt, während worksheet.select es auswählt, ohne es zu aktivieren. In den meisten Fällen ist activate die bevorzugte Methode, um sicherzustellen, dass der Fokus auf dem gewünschten Blatt liegt.

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