Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klassenevent wird dauernd ausgeführt

Klassenevent wird dauernd ausgeführt
17.03.2019 23:23:29
Markus
Hallo zusammen,
ich habe ein Problem mit einem Klassenevent.
Und zwar habe ich eine Datei, in der ich eine Userform für Bestellungen habe.
Darauf befinden sich mehrere ähnlich benannte Comboboxen für verschiedene Spalten, der Bestellung. es sieht also etwa so aus
Artnr1 Artbez1 Artmeng1 Artpre1
Artnr2 Artbez2 Artmeng2 Artpre2
Artnr3 Artbez3 Artmeng3 Artpre3
Artnr4 Artbez4 Artmeng4 Artpre4
Artnr5 Artbez5 Artmeng5 Artpre5
Jetzt habe ich ein Klassenmodul für eine Commandbutton(ActiveX) geschrieben.
Der zunächst alles auf vollständige angeben überprüft und anschließend alles in ein
Tabellenblatt der Arbeitsmappe einfügt.
Soweit funktioniert das auch alles.
Allerdings jedesmal, wenn er die .Value Eigenschaft einer Combobox in eine Zelle kopiert, startet er ein Klassenmodul Event einer der Combobox Klassen. Aber immer nur dieses eine Klassenmodul.
es sieht also etwa so aus:
A1.value = Artnr1.value
- Klassenmodul für Artbez()
B1.value = Artbez1.value
- Klassenmodul für Artbez()
C1.value = Artmeng1.value
- Klassenmodul für Artbez()
D1.value = Artpre1.value
- Klassenmodul für Artbez()
Wäre theoretisch nicht so schlimm, wenn es nicht erstens den prozess verlangsamen würde und zweitens am Ende einen
- Laufzeit 1004: Anwendungs- oder objektdefinierter Fehler - rauswerfen würde.
Dadurch funktioniert dann die gesamte arbeitsmappe nicht ganz Rund, weil andere Zellen von den Zellen in die Kopiert wird abhängen.
Ich hoffe mein Anliegen verständlich erklärt zu haben und dass mir jemand von euch damit helfen kann.
PS: Eine Beispiel-Mappe mit dem Fehler kann ich leider nicht anhängen, da ein nachbau der Mappe zu Komplex ist, und die Orginalmappe aus Datenschutzgründen nicht veröffentlicht werden darf.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenevent wird dauernd ausgeführt
18.03.2019 09:45:36
Nepumuk
Hallo Markus,
lade mal die Mappe ohne Daten, aber mit dem Code hoch. Vielleicht lässt sich daraus schon ersehen an was es liegen kann.
Gruß
Nepumuk
AW: Klassenevent wird dauernd ausgeführt
19.03.2019 14:50:15
Markus
Hallo Nepumuk,
danke erstmal, dass du dir wieder Zeit nimmst, dich mit meinem Problem zu beschäftigen.
Ich habe jetzt mal eine Mappe nur mit dem Code erstellt. Der ist dann nur nicht auszuführen, weil er ja von den Daten abhängig ist.
Das Problem ist wie gesagt. wenn ich denn Speicherbutton klicke und er einen Wert eintragen soll, führt er das Event des Klassenmoduls "BFeld" aus.
https://www.herber.de/bbs/user/128497.xlsm
Danke dir für deine Mühe.
Gruß Markus
Anzeige
AW: Klassenevent wird dauernd ausgeführt
19.03.2019 16:14:02
Nepumuk
Hallo Markus,
nur als Beispiel:
Dim OArray() As New OBut
Ist gelinde gesagt Mist. Genau damit erzeugst du unkontrollierten Code. Dimensioniere die Klassenvariable in der Prozedur und sammle sie in einer Collection.
Ich habe dir mal eine "saubere" Klasse erstellt: https://www.herber.de/bbs/user/128503.xlsm
Gruß
Nepumuk
AW: Klassenevent wird dauernd ausgeführt
20.03.2019 14:01:28
Markus
Hallo Nepumuk,
ich dachte mir ja schon, das es wahrscheinlich an der einspeißung des Klassenmoduls liegt.
Habe bisher damit wie gesagt noch nie gearbeitet.
Dein Code sieht besser aus als meiner, ist allerdings auch komplexer, weswegen ich leider auch nicht ganz durchblicke.
Wieso muss man so viele Collections deklarieren?
Das mit "property let" und "property get" und "property set" habe ich schon einmal gesehen, jedoch noch nicht verstanden wozu ich das brauche.
Vielleicht kannst du mir das ja kurz erkläen, damit ich verstehe, was ich bei den 20 Klassen von mir ändern muss. Bzw. es würde auch gehen, wenn du kurze Erklärungskommentare in deine Mappe einfügen könntest.
Ich danke die war schon eine Mega Hilfe.
Grüße Markus
Anzeige
AW: Klassenevent wird dauernd ausgeführt
20.03.2019 17:01:18
Nepumuk
Hallo Markus,
1. Du kannst alle Klassen in die eine Collection packen.
2. Property-Prozeduren deklarieren Eigenschaften. Im Userform ist die Collection eine Eigenschaft der Userformklasse. Im Klassenmodul ist der CommandButton eine Eigenschaft der clsCommandButton-Klasse.
Wenn du im Lokalfenster oder im Überwachungsfenster ein Objekt aufklappst siehst du dessen Eigenschaften. Und genauso ist es bei deinen Klassen.
Jetzt klarer?
Gruß
Nepumuk
AW: Klassenevent wird dauernd ausgeführt
20.03.2019 20:31:00
Markus
Hallo Nepumuk,
also ein bisschen mehr verstehe ich es schon.
a)In eine Collection kann ich alles reinpacken.(button,textbox,Listbox...)und eben auch Klassen, richtig
b)Das mit den Properties hab ich auch so ungefähr glaub ich verstanden:
Der Commandbutton an sich ist Property der Klasse. So kann ich über die Property jeden commandbutton
als Teil der Klasse festlegen. deklariere dann aber nicht den Commandbutton, sondern die Klasse als
teil der Collection? und warum hohl ich mit mit get erst ne "mobj..." property und leg dann die
"mobj.." Property dannach als "probj..." fest?
Also ich glaub ich hab auch ein Problem mit dieser Standartisieren schreibweise von Klassen, Modulen und Steuerelementen.. :D ich finde das ganze mit "cls" davor und "Class" dahinter und mal "probj", mal "mobj" davor und so irgenwie für mich unübersichtlich.
Kurz ich hba noch keine Idee, wie ich den Code aus meinen Klassenmodulen in eine Collection bekomme und wo ich wie welche Properties festlegen und abfragen muss.
Gruß
Markus
Anzeige
AW: Klassenevent wird dauernd ausgeführt
21.03.2019 09:34:13
Nepumuk
Hallo Markus,
in die Collection packst du nicht den Code der Klasse sondern die Instanz der Klasse welche du mit New erzeugst. Und du sollst das eben nicht mit "Array() As New Klasse" machen denn damit werden Alle Controls dieser Klasse wie ein Control behandelt, was wie bei dir zu unerwünschten Nebenwirkungen führt.
Bei der Benennung von Klassen und Variablen halte ich mich an die "ungarische Notation". Damit wird Code für mich einfacher lesbar. Aber es bleibt dir überlassen wie du deine Variablen benennst.
Ich werde mich hüten deinen Code zu korrigieren, der ist mir zu sehr "Kraut und Rüben".
Ich lass die Frage offen, vielleicht findet sich jemand der das auf sich nimmt.
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige