Hi gary,
Nur zum Verständnis:
Routine ist das Makro? Desshalb wird "Worksheet_Calculate" nicht benötigt.
ja, genau.
Ereignis heißt ja, dass etwas ausgeführt wird, wenn etwas passiert - in diesem Fall bei einer Berechnung.
Jein, das Ereignis ist der Klick auf "Import einlesen". Excel rechnet nach der Aufteilung der Datenfelder automatisch die in den einzelnen Zellen befindlichen Formeln aus.
Also doch. ;-)
Der Klick auf "Import einlesen" wird abgefangen, also ist das das Ereignis. Der Klick passiert, also wird etwas ausgeführt. Hier sind noch ein paar weitere Ereignisse (müsste allerdings mal etwas aktualisiert werden …):
http://www.vba-beispiele.de/office.php?was=1302
Wenn Deine Routine schon läuft, kannst Du den Vergleich der Werte und das davon abhängige Ein- und Ausblenden der Grafiken auch gleich da einbauen.
Also im Makro "Funktion_Import_Einlesen" was ja dem Knopf "Import einlesen" (eine schlichte Grafik) zugewiesen ist am Ende(!) die zusäzliche Ampellösung anfügen. Am Ende desshalb, da die Ampelfunktion auf das Ergebnis in der Zelle F/G50 (Wahr/Falsch) warten muss?
Ja, genau:
- Klick auf Grafik
- Daten werden eingelesen
- Excelformeln rechnen
- Prüfen der Werte
- Ampelfunktion, also Grafiken aus-/einblenden
"Händisch" wird eigentlich nichts geändert. Die Importdaten stammen aus der E-Mail und werden mit obigem Makro in Felder aufgeteilt. Die anderen Werte sind fest eingestellt. Zur Berechnung dienen die übermittelten E-Mail Stückzahlen.
Dann brauchst Du wirklich keine weiteren Event-Handler, Ereignisse müssen also nicht abgefangen werden.
Zurück zum Makrocode:
Also sowas in die Richtung if FG50=WAHR then goto Ampel_grün
if FG50=FALSCH then goto Ampel_rotAmpel_grün:
Grafikbefehle....Ampel_rot:
Grafikbefehle....
Am liebsten würde ich jetzt "Autsch" schreiben. ;-)
Goto verwendet man eigentlich nur noch bei Fehlerbehandlungen, sonst nicht mehr.
if FG50=WAHR then
Grafik1.visible = true
Grafik2.visible = false
else
Grafik1.visible = false
Grafik2.visible = true
end if
Wobei der Sybtax jetzt natürlich gar nicht Excelkompatibel ist *g*
Nee, meine auch nicht, dient ja auch nur zur Veranschaulichung.
BtW. Ist die Makrosprache VisualBasic? Hab sowas mal gelesen...
Einmal gibt es VB, das ist die Sprache an sich. Dann gibt es VBA, das ist Visual Basic for Applications und ist eingebettet in die einzelnen Office-Anwendungen. Dadurch hat "jedes" VBA ein paar Besonderheiten, zum Beispiel besondere Objekte, Methoden und Eigenschaften. In Excel gibt es zum Beispiel das Range-Objekt, das man in Word vergeblich suchen wird.
Ein VB-Programm wird kompiliert, wodurch man z. B. eine ausführbare exe-Datei hat. In VBA geschriebener Code benötigt die jeweilige Anwendung zur Ausführung, also z. B. Excel.
Dann gibt es noch VBS, das man im Windows-Editor schreiben kann.
Bei Wikipedia gibt es, glaube ich,auch einen Artikel dazu.
Viele Grüße
Jörg