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

Ansicht soll sich aktualisieren, aber ...

Forumthread: Ansicht soll sich aktualisieren, aber ...

Ansicht soll sich aktualisieren, aber ...
23.01.2014 13:25:57
TinoB
Hallo Excelgemeinde,
ich stehe wieder einmal vor einem Problem. Ich lese in eine Exceldatei eine CSV Datei ein, bereite diese auf und erstelle ein fertiges Diagramm daraus. Das ganze mit VBA und Makro was auch sehr gut funktioniert. Das Ergebnis ist eine neue Datei mit Diagramm und der Wertetabelle für das Diagramm. Jetzt gibt es ein UserForm wo alle Spalte aus der Wertetabelle mit Checkbox an- und abwählbar sind. Also die UserForm mit den Checkboxen greift auf die Wertetabelle zu. Ist die Checkbox Enabled, wird der entsprechende Graf im Diagramm angezeigt, ist dieser disabled wird die Spalte und somit der Graf ausgeblendet. Soweit ist das auch alles in Ordnung.
Jetzt zum Problem. Ich möchte nun, dass sich jedesmal bei Checkbox enabled bzw. disabled das Diagramm aktualisert. Und an dieser Stelle komme ich nicht weiter. Entweder man kann den Eintrag der Checkboxen ändern und erst beim Schließen dieser ändert sich der Graf, oder aber man kann die Checkboxen aktiveren und es wird dabei die Wertetabelle angezeigt. Ich würde jedoch gerne das UserForm mit den Checkboxen auf dem Diagrammblatt haben, sich die Grafen ein- und ausblenden lassen ohne dass die Wertetabelle in den Fordergrund rückt.
Ist so etwas möglich? Und wenn ja, wie müsste dieser Code angepasst werden?
- UserForm öffnen, Checkboxen werden gefüllt

Private Sub UserForm_Activate()
With Application
.ScreenUpdating = False
.DisplayAlerts = True
End With
Sheets("Werte").Activate
Dim X&
For X = 3 To 22
Me.Controls("Checkbox" & X).Value = Not Columns(X).Hidden
Next
End Sub

- Abfragen der einzelnen Checkboxen bzw. ein- und ausblenden der Spalten

Private Sub CheckBox3_Click()
X = 3
Columns(X).EntireColumn.Hidden = Not CheckBox3.Value
End Sub
Private Sub CheckBox4_Click()
X = 4
Columns(X).EntireColumn.Hidden = Not CheckBox4.Value
End Sub
Private Sub CheckBox5_Click()
End Sub

- Schließen vom UserForm

Private Sub CommandButton1_Click()
Sheets(1).Activate
Unload Me
Application.ScreenUpdating = True
End Sub

Danke
TinoB

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ansicht soll sich aktualisieren, aber ...
23.01.2014 13:47:19
fcs
Hallo Tino,
damit das Diagramm angeuzeigt werden kann während die Checkboxen geändert werden muss vor allen Range, Cells, Columns, die sich auf das Werteblatt beziehen, auf das entsprechende Blatt referenziert werden.
Dies geht am einfachsten über eine Variable, die modulweit deklariert wird und der die Wertetabelle in der Activate oder Initialize-Prozedur des Userforms zugewiesen wird.
Ich hab deine Makros mal angepasst, jedoch ohne Gewähr für Funktion.
Gruß
Franz
Private wksData As Worksheet 'Modulweit gültige Variable
Private Sub UserForm_Activate()
Set wksData = Sheets("Werte")
Sheets(1).Activate 'Diagrammblatt
With Application
.ScreenUpdating = False
.DisplayAlerts = True
End With
Dim X&
For X = 3 To 22
Me.Controls("Checkbox" & X).Value = Not wksData.Columns(X).Hidden
Next
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
'- Abfragen der einzelnen Checkboxen bzw. ein- und ausblenden der Spalten
Private Sub CheckBox3_Click()
X = 3
wksData.Columns(X).EntireColumn.Hidden = Not CheckBox3.Value
End Sub
Private Sub CheckBox4_Click()
X = 4
wksData.Columns(X).EntireColumn.Hidden = Not CheckBox4.Value
End Sub
Private Sub CheckBox5_Click()
End Sub
'- Schließen vom UserForm
Private Sub CommandButton1_Click()
Sheets(1).Activate
Unload Me
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Ansicht soll sich ...Danke funktioniert o.T.
23.01.2014 15:09:17
TinoB
Danke

AW: Ansicht soll sich aktualisieren, aber ...
23.01.2014 13:50:02
Rudi
Hallo,
verzichte auf Activate.
Private Sub UserForm_Activate()
Dim x&
With Application
.ScreenUpdating = False
.DisplayAlerts = True
End With
For x = 3 To 22
Me.Controls("CheckBox" & x).Value = Not Sheets("Werte").Columns(x).Hidden
Next
End Sub

Private Sub CheckBox3_Click()
Dim x
x = 3
Sheets("Werte").Columns(x).Hidden = Not CheckBox3.Value
End Sub

Private Sub CheckBox4_Click()
Dim x
x = 4
Sheets("Werte").Columns(x).Hidden = Not CheckBox4.Value
End Sub

Gruß
Rudi

Anzeige
AW: Ansicht soll sich aktualisieren, aber ...
23.01.2014 15:11:39
TinoB
Hallo Rudi,
warum soll man auf Activate verzichten? Mit diesem Code aktualisiert sich das Diagramm erst nach dem Schließen vom UserForm. So wie es vorher war.
Gruß
TinoB
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Ansicht aktualisieren mit VBA und UserForms


Schritt-für-Schritt-Anleitung

Um das Diagramm in Excel dynamisch zu aktualisieren, während Du Checkboxen in einem UserForm änderst, kannst Du die folgende Schritt-für-Schritt-Anleitung nutzen. Diese Anleitung basiert auf den Beiträgen im Forum.

  1. Erstelle ein UserForm mit Checkboxen für jede Spalte, die Du ein- oder ausblenden möchtest.

  2. Füge den folgenden Code in das UserForm ein, um die Checkboxen beim Aktivieren des UserForms zu initialisieren:

    Private Sub UserForm_Activate()
       Dim wksData As Worksheet
       Set wksData = Sheets("Werte") ' Verweis auf das Datenblatt
       With Application
           .ScreenUpdating = False
           .DisplayAlerts = True
       End With
       Dim X
       For X = 3 To 22
           Me.Controls("Checkbox" & X).Value = Not wksData.Columns(X).Hidden
       Next
       Application.ScreenUpdating = True
    End Sub
  3. Füge den Code für die Checkboxen hinzu, um die Sichtbarkeit der Spalten zu steuern:

    Private Sub CheckBox3_Click()
       Dim X
       X = 3
       Sheets("Werte").Columns(X).Hidden = Not CheckBox3.Value
    End Sub
    
    Private Sub CheckBox4_Click()
       Dim X
       X = 4
       Sheets("Werte").Columns(X).Hidden = Not CheckBox4.Value
    End Sub
  4. Schließe das UserForm mit dem folgenden Code:

    Private Sub CommandButton1_Click()
       Unload Me
       Application.ScreenUpdating = True
    End Sub
  5. Teste das UserForm, um sicherzustellen, dass das Diagramm sich aktualisiert, während Du die Checkboxen änderst.


Häufige Fehler und Lösungen

  • Diagramm aktualisiert sich nicht sofort: Stelle sicher, dass der ScreenUpdating-Befehl korrekt gesetzt ist. Verwende Application.ScreenUpdating = True, um sicherzustellen, dass die Ansicht aktualisiert wird.

  • Checkboxen zeigen falsche Werte an: Überprüfe den Code im UserForm_Activate(). Achte darauf, dass die Spalten korrekt referenziert werden.

  • Fehlermeldungen beim Zugriff auf Spalten: Stelle sicher, dass die Spaltennummern in den Checkboxen korrekt sind und dass das Arbeitsblatt "Werte" existiert.


Alternative Methoden

Eine alternative Methode zur Aktualisierung des Diagramms könnte die Verwendung von Worksheet-Change-Ereignissen sein, die automatisch ausgeführt werden, wenn Änderungen an den Daten vorgenommen werden. Diese Methode kann jedoch komplexer sein und erfordert zusätzliche Planung.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein UserForm mit drei Checkboxen:

Private Sub CheckBox1_Click()
    Sheets("Werte").Columns(3).Hidden = Not CheckBox1.Value
End Sub

Private Sub CheckBox2_Click()
    Sheets("Werte").Columns(4).Hidden = Not CheckBox2.Value
End Sub

Private Sub CheckBox3_Click()
    Sheets("Werte").Columns(5).Hidden = Not CheckBox3.Value
End Sub

Verwende dieses Beispiel, um eine Vorstellung davon zu bekommen, wie Du die Checkboxen steuern kannst.


Tipps für Profis

  • Verwende modulweite Variablen: Dies reduziert die Anzahl der Activate-Befehle und verbessert die Performance beim Aktualisieren des Bildschirms.

  • Vermeide unnötige .Activate-Befehle: Sie können dazu führen, dass der Bildschirm flackert und die Benutzererfahrung beeinträchtigt wird.

  • Nutze DoEvents: Wenn Du umfangreiche Aktualisierungen durchführst, lasse Excel den Benutzeroberflächen-Thread arbeiten, damit die Anwendung reaktionsfähig bleibt.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Diagramm immer aktuell ist?
Verwende Application.ScreenUpdating = True nach der letzten Änderung, um sicherzustellen, dass Excel die Ansicht aktualisiert.

2. Was tun, wenn das UserForm nicht angezeigt wird?
Überprüfe, ob das UserForm korrekt in Deinem VBA-Projekt eingebunden ist und ob es mit dem richtigen Befehl geöffnet wird, z.B. UserForm1.Show.

3. Wie kann ich mehr Checkboxen hinzufügen?
Füge einfach weitere Checkboxen im UserForm-Designer hinzu und erweitere den entsprechenden VBA-Code für die Sichtbarkeit der zusätzlichen Spalten.

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