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

Forumthread: Ereignis bei Steuerelement gesucht

Ereignis bei Steuerelement gesucht
05.02.2005 10:42:40
Eugenie
Hallo,
welches Ereignis kann ich mittels VBA auswerten, wenn bei einem Steuerelement (Dropdown) eine andere Auswahl stattfindet?
MfG
Eugenie
Anzeige

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das Change Ereignis o.T.
Jens_Pu
AW: Das Change Ereignis o.T.
Eugenie
hallo jens_pu (?),
irgend etwas in der Art war mir klar (soooo blond bin ich nun doch nicht immer) - aber wie spreche ich es *genau* an? 'Dropdown.change' geht nämlich nicht ...
MfG
Eugenie
AW: Das Change Ereignis o.T.
Jens_Pu
Hallo Eugenie,
hast Du Dein Dropdown in einer Userform oder in der Tabelle?
Gruß Jens
Anzeige
AW: Das Change Ereignis o.T.
Eugenie
Hallo Jens,
Keine Ahnung, was eine Userform ist, das Dropdown-Steuerelement ist innerhalb einer Tabelle angelegt.
MfG
Eugenie
AW: Ansatz
Jens_Pu
Hallo Eugenie,
im Codebereich der Tabelle auf der Die Combobox steht:

Private Sub ComboBox1_Change()
dein weiterer code
End Sub

Gruß Jens
Anzeige
AW: Ansatz
Eugenie
Hallo Jens!

Private Sub ComboBox1_Change()
dein weiterer code
End Sub

Verstehe ich es richtig: im Codebereich der Subroutine kann x-bliebiger Code stehen? Ich muß da nicht noch eine Extravariable des Steuerelementes abfragen?
Letzteres war nämlich bisher mein Ansatz ('welcher Wert wurde gewählt'), eventuell bin ich deswegen nicht weitergekommen ....
Danke für die etwas ausführlichere Erläuterung :-)
MfG
Eugenie
Anzeige
AW: Ansatz
Eugenie
Hallo Jens,
ich habe als Nachtrag zu

Private Sub ComboBox1_Change()
dein weiterer code
End Sub

noch 2 weitere Fragen: muß in der Klammer von _Change() noch was stehen und wenn ja, was und wohin packe ich den Code am besten, wenn er über alle Tabellenblätter gehen soll. Wenn ich ihn nach 'DieseArbeitsmappe' stelle, wird er immer im Bereich 'Allgemein' abgelegt. Ist das der richtige Bereich?
Mit VBA fange ich gerade erst an und die Hilfe von VBA ist nicht gerade sehr hilfreich - Sorry also für die für Fachleute 'dummen' Fragen :-)
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hallo Eugenie,
scheinbar hast Du meine Antwort von 11:37h nicht gelesen.
Beschreibe doch mal was Du eigendlich machen willst.
Was soll denn geprüft werden?
Was soll passieren?
Gruß Jens
AW: Ansatz
Eugenie
Hallo Jens!
scheinbar hast Du meine Antwort von 11:37h nicht gelesen.
Stimmt - mußte ja gleich deinen Vorschlag durchexerzieren :-)
Beschreibe doch mal was Du eigendlich machen willst.
Was soll denn geprüft werden?
Was soll passieren?

Siehe dazu im anderen Zweig von diesem Thread :-)
MfG
Eugenie
Anzeige
AW: Ansatz
Eugenie
Hallo Jens,
ja, Dein Beispiel macht genau das, was ich meinte :-)
Vielen Dank :-)
Geht sowas eigentlich auch umgekehrt? Ich meine, kann ich von einem anderen Tabellenblatt aus fragen lassen, ob sich der Inhalt einer Combobox geändert hat (Wert der Combobox erst einmal egal)?
Als angerissenes (und wohl falsche Syntax) Beispiel:
Geht etwas in der Form IF Combobox1_Change() THEN?
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hallo Eugenie,
wie sollte sich die Combobox verändert haben, wenn Du Dich auf einem anderen Tabellenblatt befindest? Ist mir nicht ganz klar was Du meinst.
Den Wert abfragen geht sicher:
https://www.herber.de/bbs/user/17494.xls
Gruß Jens
Anzeige
AW: Ansatz
Eugenie
Hallo Jens!
wie sollte sich die Combobox verändert haben, wenn Du Dich auf einem anderen Tabellenblatt befindest? Ist mir nicht ganz klar was Du meinst.
*seufz* - ich und meine Erklärungsversuche :-(
Ich wollte meinen ersten Versuch unter 'DieseArbeitsmappe/Woorkbook' ablegen - er ist aber (automatisch) unter 'DieseArbeitsmappe/Allgemein' gelandet. Und ich weiß nun nicht, ob das Auswirkungen auf die Funktionalität hat ....
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hi,
ist mir nicht klar? Was Du willst?
Gruß Jens
AW: Ansatz
Eugenie
Hallo Jens!
Den Wert abfragen geht sicher:
https://www.herber.de/bbs/user/17494.xls

ist nicht ganz, was mir vorschwebt. Die Änderung in der Combobox soll nur was 'anstoßen', also schematisch etwa:
If Combobox1_Change() THEN Sheets("XYZ").Cells (1, 1) = "Es ist vollbracht"
Geht sowas auch?
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hi,
auch das ist unklar.
Beschreib doch mal genau was Du machen willst.
Gruß Jens
AW: Ansatz
Eugenie
Hallo Jens!
auch das ist unklar.
Beschreib doch mal genau was Du machen willst.

Komisch - viel mehr kann man fast nicht mehr dazu erklären:
auf einem Tabellenblatt soll eine mehr oder weniger komplexe Reaktion ablaufen, wenn auf dem Masterblatt in dem dort vorhandenem Steuerelement der Wert gewechselt wurde - welcher Wert in dem Steuerelement anschließend vorliegt, ist dafür nicht von Bedeutung, nur das *überhaupt* eine Änderung des Wertes stattfand.
Also im Prinzip eine klassische IF ... THEN Situation, wobei der IF-Wert eben das Change-Ereignis des Steuerelementes darstellt.
Also

WENN
....Combobox1_Change() stattgefunden hat
DANN
....mache diese oder jenes
SONST
....warte weiter darauf

Ich hoffe, diese Erklärung war etwas besser, wüßte sonst nicht, wie ich es sonst noch besser verdeutlichen kann ....
MfG
Eugenie
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hi,
dann schreib Deinen Code für "...mach dies oder jenes" doch mit in die Combobox1_Change()-Routine.
Gruß Jens
AW: Ansatz
Eugenie
Hallo Jens!

dann schreib Deinen Code für "...mach dies oder jenes" doch mit in die Combobox1_Change()-Routine.

Wäre nicht praktikabel, da das Ereignis innerhalb diverser Zellen abgefragt werden soll. Wird denn kein abfragbares Flag gesetzt, wenn ein Combobox_Change()-Ereignis stattgefunden hat?
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Hi,
tut mir leid, Du beschreibst immer nur abstraktes Zeugs und umgehst beharrlich eine Beschreibung dessen was Du machen willst. Vermutlich arbeitest Du beim KGB oder CIA und Dein Projekt ist so geheim, dass Du selber noch nicht genau weisst was es machen soll. ;-)
Bin mir fast sicher, dass es für manche Deiner Probleme eine simple Lösung gibt. Dir dabei zu helfen scheitert einfach daran, dass wir hier nicht wissen was das ganze soll.
Warum sollte ein Flag gesetzt werden? Das forderst nur Du. Für eine Abfrage innerhalb diverser Zellen. Was auch immer Du damit meinst. Definiere Dir doch eine Variable. Setze sie wenn die Change Routine durchlaufen wird. Frage sie ab wo auch immer Du willst (vorausgesetzt als Public deklariert).
Wenn es zu umfangreich ist alles zu beschreiben, kannst Du ja auch eine Mustermappe hochladen und dann dazu deine Wünsche und Fragen äussern.
Gruß Jens
Anzeige
AW: Ansatz
Eugenie
Hallo Jens!
tut mir leid, Du beschreibst immer nur abstraktes Zeugs
Sicher mache ich das - wenn ich noch keine *konkrete* Umsetzung habe, *muß* ich es abstrahieren beim beschreiben ...
und umgehst beharrlich eine Beschreibung dessen was Du machen willst.
Ich würde gern von Excel aus abfragen, ob ein bestimmtes Ereignis eines (später von drei) Steuerelementes stattgefunden hat - nicht mehr und nicht weniger.
Vermutlich arbeitest Du beim KGB oder CIA und Dein Projekt ist so geheim, dass Du selber noch nicht genau weisst was es machen soll. ;-)
Leider ist dann auch der Arbeitsvertrag so geheim, daß ich von diesem Arbeitsverhältnis nichts weiß - genauso wie die Gehaltszahlungen *bg*
Bin mir fast sicher, dass es für manche Deiner Probleme eine simple Lösung gibt. Dir dabei zu helfen scheitert einfach daran, dass wir hier nicht wissen was das ganze soll.
Bis auf meine aktuelle Frage (und die ursprüngliche dieses Threads ja auch) sind alle Frage hervorragend beantwortet worden :-)

Warum sollte ein Flag gesetzt werden? Das forderst nur Du.

Es *soll* nicht - war nur eine Idee, wie man an den Status eine Ereignisses herankommen könnte, falls es eins gibt ...

Für eine Abfrage innerhalb diverser Zellen. Was auch immer Du damit meinst.

= WENN(A1="1";"eins";"zwei") wäre solch eine Abfrage ....

Definiere Dir doch eine Variable. Setze sie wenn die Change Routine durchlaufen wird. Frage sie ab wo auch immer Du willst (vorausgesetzt als Public deklariert).

Darauf wird es wohl hinauslaufen - obwohl ich überzeugt bin, daß *intern* solche Variablen schon vorhanden sind, die nur darauf warten, genutzt zu werden ....

Wenn es zu umfangreich ist alles zu beschreiben, kannst Du ja auch eine Mustermappe hochladen und dann dazu deine Wünsche und Fragen äussern.

Würde ich ja gerne - aber wenn ich noch nichts konkretes vorliegen habe, kann ich auch keine Mustermappe hochladen. Das, was ich bisher versucht habe, erzeugte bisher nur die Fehlermeldung #NAME ....
MfG
Eugenie
Anzeige
AW: Ansatz
Jens_Pu
Darauf wird es wohl hinauslaufen - obwohl ich überzeugt bin, daß *intern* solche Variablen schon vorhanden sind, die nur darauf warten, genutzt zu werden ....
Viel Spaß beim suchen. ;-)
Ein Ereignis ist wie ein Unfall. Das passiert und fertig aus. Wer sich merken will ob der Unfall stattgefunden hat, der kann das ja tun. Die Erde dreht sich weiter.
aber wenn ich noch nichts konkretes vorliegen habe, kann ich auch keine Mustermappe hochladen. Das, was ich bisher versucht habe, erzeugte bisher nur die Fehlermeldung #NAME ....
Wer Fragen zum Auslösen von Ereignissen in VBA stellt hat nur eine leere Excelmappe die die Fehlermeldung #NAME .... erzeugt. *rofl*
Du willst mir also erzählen, Du fragst das alles nur so?
Keine Mappe mit irgendwas in irgendwelchen Zellen?
Keine konkreten Vorstellungen was, wann, wie passieren soll?
Vielleicht solltest Du hier im Forum mal so einige Fragen von andern lesen.
Die haben eigendlich meistens konkrete Vorstellungen was sie wollen oder gerne hätten. Vielfach bekommen die sogar eine Komplettlösung, oder ihnen wird nur die richtige Vorgehensweise nit auf den Weg gegeben.
Wir eiern jetzt seit heute früh 10:42h hier rum, und Du redest immer nur um den heissen Brei herum.
Gruß Jens
Anzeige
AW: Ansatz
Eugenie
Hallo Jens!

Wer Fragen zum Auslösen von Ereignissen in VBA stellt hat nur eine leere Excelmappe die die Fehlermeldung #NAME .... erzeugt. *rofl*

Von *leer* war nie die Rede, nur von nicht aussagekräftig ;-)

Du willst mir also erzählen, Du fragst das alles nur so?
Keine Mappe mit irgendwas in irgendwelchen Zellen?
Keine konkreten Vorstellungen was, wann, wie passieren soll?

Ich frage nicht 'nur so' - dazu habe ich viel zu viel Respekt vor solchen Hilfsforen und ihren ehrenamtlichen Helfern!
Ich habe eine konkrete Aufgabe zu erledigen und für einen Teilsaspekt (genaueres siehe meine Message an Peter) habe ich an eine bestimmte Lösungsmöglichkeit gedacht. Das ist alles.
Wenn ich meine angedachte Vorgehensweise nicht so unterbreiten konnte, das eine praktikable Lösung in meiner angedachten oder in alternativen Form gefunden werden konnte - mein Pech.
Aber das Problem ist nichtsdestotrotz sehr konkret!

Wir eiern jetzt seit heute früh 10:42h hier rum, und Du redest immer nur um den heissen Brei herum.

Tut mir leid, wenn Du diesen Eindruck gewonnen hast - war bestimmt nicht meine Absicht ....
MfG
Eugenie
Anzeige
OT Hinweis
PeterW
Hallo Eugenie,
da hab ich ja was angerichtet! Hätte ich mal besser auf deinen angegebenen Level geachtet "VBA nein" und dir nicht die Ereignisroutine angeboten. Versteh mich nicht falsch aber wer mal an einem Rundflug in einer Chessna teilgenommen hat wird etliche Flugstunden brauchen, bis er einen Jumbo sicher in die Luft und wieder auf die Erde bringt. Selbst wenn man in diversen Filmen immer mal wieder sehen kann, dass das mit Unterstützung des Towers gehen kann ("ganz ruhig Ann, wir holen sie da runter; folgen sie ganz genau meinen Anweisungen"), würde es in Realität in einem Crash enden.
Vermutlich geht es immer noch um die Zuordnung bestimmter Werte in Spalten zu damit korrespondierenden anderen Spalten. Wie du das jetzt mit Steuerelementen angehst (angehen willst) hast du noch nicht verraten.
Ich stimme Jens zu: ich sehe keinen Sinn in einer Tabelle abzufragen, ob sich in einem Steuerelement auf einer anderen Tabelle etwas geändert hat. Sofern das eine Auswirkung auf das aktuelle Blatt und die Aufgabe darin hätte würde man das direkt mit Änderung des Steuerelementes programmieren.
Für den Fall, dass ich falsch liege und es dir wirklich um abstrakte Probleme und deren Lösung geht lege ich dir die Excel-FAQ nahe (oben auf Services und dann Excel-FAQ). Dort kannst du anhand vieler Beispiele zumindest sehen, was alles möglich ist.
Gruß
Peter
Anzeige
AW: OT Hinweis
Eugenie
Hallo Peter!
da hab ich ja was angerichtet!
Och nö - Du hast nur erreicht, daß ich mich früher um VBA gekümmert habe :-)
Es ist ja nicht so, daß ich nicht mit Programmiersprachen vertraut bin - in Delphi, C, PHP usw. kenne ich mich recht gut (bis sehr gut) aus. Nur nicht in VBA in Zusammenarbeit mit Excel. Aber über kurz oder lang hätte ich ich in jedem Fall damit beschäftig :-) .-)

Hätte ich mal besser auf deinen angegebenen Level geachtet "VBA nein" und dir nicht die Ereignisroutine angeboten.

Warum? Sie läuft doch hervorragend!

Vermutlich geht es immer noch um die Zuordnung bestimmter Werte in Spalten zu damit korrespondierenden anderen Spalten.

Indirekt - diese Tabelle ist allerdings im Gesamtkonzept involviert.
Im Endeffekt geht es um eine Art Preiskalkulation:
auf dem ersten Tabellenblatt wird per Auswahl aus Steuerelementen festgelegt, welcher Typ Gegenstände (Combobox1) aus welchem Material (Combobox2) in welcher Farbe (Combobox3) hergestellt werden soll. Auf den anderen 20 Tabellenblätter sind dann die genauen Einzelheiten jedes Gegenstandtypos wie Rohstoff, Rohstoffpreis, welche Einzelteile werden verwendet, Größe etc. als Listen geführt.
Anhand dieser Listen in Kombination mit den Auswahlkriterien auf der Masterseite wird auf der Masterseite eine Liste generiert, die das fertige Produkt zusammen mit Verkaufspreis, Großhandelspreis, Herstellungspreis etc. auflistet.
Das bedeutet in der Praxis, wenn ich die z.B. Auswahl von Holz auf Plastik ändere (die anderen Auswahlkriterien aber so lasse) ich sofort sehen kann, was ich zu welchem Preis herstellen kann und wie hoch der theoretische Gewinn usw. ist.

Ich stimme Jens zu: ich sehe keinen Sinn in einer Tabelle abzufragen, ob sich in einem Steuerelement auf einer anderen Tabelle etwas geändert hat.

Mein Problem ist: einige dieser Hilfstabellen müssen intern umgestellt werden, je nachdem was z.B. in der Materialauswahl festgelegt worden ist. Das geht meiner Ansicht nur dann vernünftig, wenn eben auf eine Änderung innerhalb dieser Auswahl reagiert werden kann. Im zweiten Schritt wird dann auch der Wert dieser Auswahl benötigt (aber den zu erhalten ist ja kein Problem).
Falls es einen anderen Weg gibt, wie ich die Tabelle dazu bringen kann, auf solche Ereignisse zu reagieren, wäre ich froh - ich glaube langsam, daß es auf die von mir angedachte Möglichkeit nicht geht.

Für den Fall, dass ich falsch liege und es dir wirklich um abstrakte Probleme und deren Lösung geht lege ich dir die Excel-FAQ nahe (oben auf Services und dann Excel-FAQ). Dort kannst du anhand vieler Beispiele zumindest sehen, was alles möglich ist.

Abstrakt ist höchstens meine Problembeschreibung - meine Lösungssuche ist dagegen sehr ernsthaft :-)
MfG
Eugenie
Anzeige
AW: Das Change Ereignis o.T.
Eugenie
Dropdown.change ist natürlich Unsinn - meinte Dropdown_Change().
Und was innerhalb von _Change() am besten abgefragt wird ...
Sorry für das Verwirrspiel, aber die etwas unhöfliche Antwort auf meine Frage ließ mich etwas zu flott in die Tasten greifen ...
MfG
Eugenie
AW: Das Change Ereignis o.T.
Jens_Pu
Hallo Eugenie,
Und was innerhalb von _Change() am besten abgefragt wird ...
Geht Dein Verwirrspiel nun weiter?
Woher sollen wir hier wissen was da am besten abgefragt wird. Das kommt doch darauf an was Du erreichen willst. Das hast Du allerdings bisher nich verraten.
Vielleicht solltest Du mal erklären, was Du eigendlich erreichen willst?
Gruß Jens
Anzeige
AW: Das Change Ereignis o.T.
Eugenie
Hallo Jens!
Vielleicht solltest Du mal erklären, was Du eigendlich erreichen willst?
Ich möchte folgendes erreichen:
wenn im Tabellenblatt 'Master' im Dropdown-Steuerelement #9 eine neue Auswahl getroffen wird, soll auf dem Tabellenblatt 'Material' der ausgewählte Wert in eine Zelle geschrieben werden.
Und dieses zu realisieren hatte ich mir einfacher vorgestellt, als es im Moment noch für mich ist ....
MfG
Eugenie
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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