Hallo Reinhard,
Jepp, das stimmt, nur du übersiehst eines, ich trinke viel
Bier und es trifft immer die falschen Gehirnzellen die dabei
gelöscht werden, die Gehirnzellen die Informationen an die
Frau meines Lebens beinhalten sind letztlich leider
unverwüstlich, Zellen die sich deine Infos merken werden
dagegen leicht weggespült
oder
weiß grad nicht.
Naja dann frage halt einfach nochmal nach und ich erklaere es dir solange bis es irgendwann mal haengen geblieben ist 
? abgesehen von Klassenmodulen kenne ich da nichts
nichtsoumständliches.
Reinhard. Ich vermute mal das du das was Grundsaetzliches nicht weisst
Unter Vb und ergo auch VBA, hast du wenn du eine Form nutzt, sogeannte Steuerelemente ( TextFelder, Schaltflaechen, Listboxen, Comboboxen etc.) Etc. Zur Verfügung. Das alles sind Objecte. Deswegen musst du auch eine Zuweisung alla Set … machen. Diese sind dann übrigens Refernzvariablen
Sprich die Variable beinhaltet nur eine Zahl. Diese wird auf dem Stack abgelegt und zeigt auf den Managed Haep, wo sich dann letztendlich die Daten befinden. Deswegen ist ein aendern via ByVal möglich!
Aber sei’s drum zurueck zum Thema! Objecte wie zum Bsp. Ein Auto, hat Eigenschaften/Methoden und koennen Ereignisse auslösen! Wenn wir das mal auf das Auto ummuenzen. Eigenschaft -> Farbe = Rot, Methode -> Gas geben -> Ereigniss --> Auto wird schneller .
Soweit alles klar ?
Wenn wir das nun einmal auf die Steuerelemente ummuenzen. Diese haben auch Eigenschaften/Methoden und Ereignisse. Wenn du zum Bsp. eine Combobox auf die Form ziehst, so kannst du dann im Quelltext die Combobox auswaehlen und dann ergo auch auf die ereignisse zugreifen. Diese löst das Object selber aus. In einer Klasse waere das der Befehl
RaiseEvent 
Auch haben diese Steuerelement, ich nenn sie mal OCX Eigenschaften. Das sind dann die Sachen die du einstellen kannst. Zum Bsp. die Farbe oder die Höhe etc. Auch haben sie Methoden! Das sind dann die Sachen die du nur im Quelltext aufrufen kannst
Ist nen bissl Laienhaft erklärt. Aber wenn ich auf die uhr schaue *feix* kann man mal darueber hinweg sehen 
So nun zurueck zur Combobox. Du hast eine Combobox. Nennen wir sie mal Combo1. Diese löst das Ereignis KeyPress aus! In dem Ereignis wird die Taste die du gedrueckt hast, als Argument mit uebergeben!
Unter VB schaut das dann so aus
Private Sub Combo1\_KeyPress(KeyAscii As Integer)
End Sub
Unter VBA, sollte es eigentlich auch so ausschauen 
Das gute an einer Combobox ist, das wenn sie nicht schreibgeschuetzt ist, ich eine Taste druecke, dann das Ereignis aufgerufen wird!
Sagen wir mal es wurde das „A“ gedrueckt. Dann bekomme ich als Argument (Keyascii ) die 65 geliefert. Das Ereignis wird aufgerufen bevor das Zeichen dargestellt wird!
Wenn ich das zeichen unveraendert lasse! Dann zeichnet er mir das „A“ in die Combobox! Natuerlich kann ich den Wert auch aendern! Ändere ich ihn zum Bsp. in 66 so schreibt er mir anstatt des „A“ dann das „B“!
Setze ich den Wert Keyascii auf 0, so schreibt er nichts!
Genau das machen wir uns zu nutze.
Die Function die ich gepostet habe, interessiert es nicht, von wo die Daten herkommen. Sie sieht halt nur die Zahl und prüft ob diese zulaessig ist. Ist sie zulaessig so liefert sie sie wieder zurueck. Wenn nicht dann kommt eine 0 zurueck!
Sicher hat die Function ein Mango. Hast du zum Bsp. 5 Comboboxen, weiss die Function nicht woher sie kommt und was für zeichen zulaessig sind. So wie sie jetzt ist, prüft sie sturr nur die zeichen. Egal um welche Combobox es sich handelt. Will man dagegen verschiedene zeichen zulassen, je nach Combobox, so muss man die Function erweitern. Sprich man übergibt entweder die komplette Combobox mit, was aber dann wiederrum nicht flexibel ist, oder man übergibt halt in einem Array die zulaessigen zeichen
Dann bleibt es flexibel 
So nun aber zurueck, zu unsere Combobox. Schauen wir uns das mal genauer an
Private Sub Combo1\_KeyPress(KeyAscii As Integer)
KeyAscii=DieFunction(KeyAscii)
End Sub
Was machen wir nun hier?
Es wird eine Taste gedrueckt! Das Ereignis ruft sich auf! in dem Ereignis machen wir eine Zuweisung. Wir aendern einfach Keyascii!
Den Wert dafür bezieht er sich aus der Function, die wir geschrieben haben (ich habse ma nicht gepostet -> zu faul *grins*)
Sagen wir einfach mal das Zeichen „A“ ist nicht Zulaessig wogegen aber „B“ zulaessig ist.
Wir druecken nun das „A“, die Function wird aufgerufen und wir bekommen eine 0 zurueck. Damit weissen wir KeyAscii den Wert 0 zu!
Der Wert 0 besagt aber das kein Zeichen dargestellt werden soll. Wie auch. Hast du mal versucht (chr(0) darzustellen ? Weil mehr macht die Combobox auch nicht *zwinker*
Wir schreiben dann aber nun das „B“ DieFunction sagt sich… AH ist zulaessig und gibt uns die 66 zurueck. Somit behaelt Keyascii den Wert 66. Die Combobox macht dann sturr Chr(66) und zeigt somit das B an 
Hast du das nun verstanden, oder ist noch etwas unklar ?
Mag sein, aber die Funktion muss doch wissen welche CB
ausgelöst wurde, woher soll sie das von sich aus wissen daß
sie jetzt funtioniern muß?
Nein muss sie nicht wissen
Siehe ein Stueck weiter oben 
Nicht ganz verstanden, sorry 
Auch dazu habe ich weiter oben etwas geschrieben 
Soso fremd, was bedeutet denn da in dem Bild daß man
Klassenmodule einfügen kann (VB5.0)
http://www.hostarea.de/server-04/April-fae3a56f2f.jpg
Oder gibt es denn Menüpunkt in VB6 nicht mehr?
Achso, das meinst du
Da stand ich ein wenig auf der Leitung :s
Natuerlich geht das. In der Version 5 und 6. Kein Thema.
Zur zeit habe ich ja mal wieder die VB5 Enterprice Edition drauf 
Und überhaupt, mal was völlig Off Topic, ich habe jetzt durch
eine Zwangsräumung einer Wohnung einer Wohnung eine VB5.0
Eisteiger CD, aber VB interessiert mich nicht, genauer, ich
hab da keine Zeit dafür, Excel-Vba und die anderen Vbas von
Word Access usw. langen mir erstmal.
Okay, mir gelang es noch nicht eine Exe zu erzeugen die mir
„hello world“ auf den Bildschirm zaubert, geschweige denn
irgendeinen Code von hier oder aus vb-active zum Laufen zu
bringen, aber das sind Peanuts, das kriege ich schon hin.
Ach na das ist ganz einfach. Das kannst du alles via Drag and Drop machen *feix* Ein Label drauf und in der Eigenschaft „Caption“ welches uebrigens eine Standard Eigenschaft ist, einfach "Hello World " schreiben
Das VB zu starten, dauert bald laenger, als das zu schreiben *grins*
Das einzige was mich aktuell und in langer Zukunft an VB
reizt, ist die Möglichkeit eine DLL zu erzeugen, um damit
meinen Vba code darein zu packen und dadurch zu schützen.
Dummerweise kann das VB erst ab 6.0, die ich nicht habe.
Da liegst du falsch! In der Version 5 Enterprice Edition geht es definitiv auch. hab da auch schon einige DLL 's entworfen 
Wie es mit der Standard Edition ist, weiss ich net. Die habe ich nicht!
MfG Alex