Clever-Excel-Forum

Normale Version: Excel-VBA - ActiveX Steuerelent BILD aktualisieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Gleich vorweg : unter der Rubrik "Excel mit VBA" konnte ich leider nichts posten, deshalb hier. Falls es falsch ist, bitte entsprechend verschieben.

Hallo Gemeinde,

ich sitze seit einigen Stunden vor meinem Problem und komme nicht wirklich weiter. Ich habe eine halbwegs umfangreiche Excel-Datei mit 2 Tabellenblättern. In dem 1. Tabellenblatt befinden sich die Daten, welche ich benötige. Im 2. Tabellenblatt wird ein Dokument erzeugt, welches Daten aus vom 1. Tabellenblatt übernimmt.

Im 1. Tabellenblatt habe ich unter anderem 8 Spalten, welche bei Notwendigkeit mit einem X markiert werden. Im Formular auf dem 2. Tabellenblatt wird nun bei Auswahl eines bestimmten Standortes geprüft, ob in den der entsprechenden Zelle eine Markierung (X) vorhanden ist. Ist zum Beispiel am Standort XYZ die Zelle "Umgang mit offenem Feuer" markiert, dann soll das Formular das entsprechende Icon laden.
Grundsätzlich funktioniert auch alles, jedoch nicht in Echtzeit. Gehe ich meinen VBA-Code Schritt für Schritt durch, dann wird das Bild sofort aktualisiert, oder eben, falls in der entsprechenden Zelle keine Markierung ist, durch ein leeres Bild ersetzt.

Gibt es denn in VBA einen Befehl / Methode, welcher genutzt werden kann, um sämtliche Formular-Daten sofort zu aktualisieren?
Hier mal der entsprechende Code-Ausschnitt dazu (sorry, ich habe gestern erst mit VBA angefangen, weil ich ein Projekt in Excel umsetzen möchte!) :

Code:
Private Sub Worksheet_Activate()

Dim strPfad As String
Dim strDatei As String
Dim strDateiLeer As String

'aktueller Pfad des Excel-Worksheets
strPfad = Workbooks("Basisdaten.xlsm").Path

'Pfad zur Datei FEUER.BMP
strDatei = ThisWorkbook.Path & "\feuer.bmp"

'Pfad zu leerem BMP-Bild
strDateiLeer = ThisWorkbook.Path & "\leer.bmp"

'Abfrage, ob X im 1. Tabellenblatt gesetzt ist --> Ja: feuer.bmp / Nein: leer.bmp
If Tabelle2.Range("O2").Value = "x" Then
   Bild1_1.Picture = LoadPicture(strDatei)
Else
   Bild1_1.Picture = LoadPicture(strDateiLeer)
End If

'Hier würde ich gerne alles aktualisieren lassen

End Sub
Hallo, :19:

"Private Sub Worksheet_Activate()" ist ein Ereignismakro, das eintritt, wenn es an der richtigen Stelle ist und wenn dann auf das Tabellenblatt gewechselt wird. :21:

Soll bei Eingabe des "X" etwas passieren, musst du das "Private Sub Worksheet_Change(ByVal Target As Range)" nehmen. Das gehört in das Tabellenblatt, in welchem du das "X" eingibst - siehe hier... Exclamation