Liebe/-r Experte/-in,
ich versuche, in einer Excel-Applikation zu den Steuerelementen eines Formulars den Typ zu ermitteln. Die Namen erhalte ich in einer Schleife mit:
Application.VBE.VBProjects(i).VBComponents(j).designer(k).Name
Der Name ist aber der zur Designzeit vergebene Namen, also z.B. „Checkk_xyz“, nicht aber der Element-Typname, also „CheckBox“ wie im Eigenschaftenfenster angezeigt.
Hinweis: für in Tabellen integrierte Steuerelemente geht das mit Application.worksheets(i).oleobjects(j).ProgId, das habe ich gelöst.
Ich habe stundenlang alles mögliche probiert, hat jemand eine Lösung?
Vielen Dank
Rainer
Hallo Rainer,
schau mal da. Wenn keine Lösung, bitte noch mal anfragen!
http://www.ozgrid.com/VBA/control-loop.htm
Grüße aus Nürnberg
Jürgen
Hallo Rainer,
die Steuerelemente auf einem Formular/Userform kann man sehr einfach mit CONTROLS ansprechen.
Also in Deinem Fall vielleicht so:
Userform1.Controls(1).Name
Den Typnamen erhältst Du mit der einfachen Abfrage:
Typename(Userform1.Controls(1))
Wenn Du das Ganze sehr sauber programmieren möchtest, könntest Du folgendes tun:
If TypeOf UserForm1.Controls(1) Is MSForms.CheckBox Then
Konnte ich damit helfen?
Beste Grüße
Gerd
Vielen Dank, mit einer früheren Anfrage hätte ich mir viel Arbeit ersparen können! Was mir gefehlt hat war die Funktion Typename!
Nochmals herzlichen Dank
Rainer
Vielen Dank, mit einer früheren Anfrage hätte ich mir viel Arbeit ersparen können! Was mir gefehlt hat war die Funktion Typename!
Nochmals herzlichen Dank
Rainer.
Hi,
hast Du’s mal so probiert?
If ctrl.ControlType = acCheckBox Then
Debug.Print „Checkbox“
End If
Ich glaub direkt ausgeben kann man den nicht, aber ändern muss auf jeden Fall möglich sein.
Poste doch mal deinen Code.
Gruß
Felix
Vielen Dank, ich habe mittlerweile eine Lösung: Typename(). Trotzdem vielen Dank
Rainer
Hallo Rainer,
leider hast Du nicht die Excel-Version angegeben. Bei Fragen zum Objektmodell ist das in der Regel sehr wichtig!
Da ich gerade auf dem Absprung in den Urlaub bin, nur eine Kurzantwort: Schau Dir mal in der Online-Hilfe das Schlüsselwort TypeOf an (If TypeOf Objekt Is Objekttyp, also z.B. „If TypeOf MyObject Is Excel.Worksheet Then …“)!
Liebe Grüße,
Kurt
Vielen Dank, mittlerweile habe ich eine Lösung: ich kannte ganz einfach die Funktionen Typename und Typeof nicht.
Schönen Urlaub
Rainer
wahrscheinlich mit Application.VBE.VBProjects(i).VBComponents(j).designer(k).Type
kann ich aber im Moment nicht ausprobieren, da im Urlaub.
Hoffentlich hilft es trotzdem.
MfG
Pete
Vielen Dank, das hatte ich schon ausprobiert. Was mir gefehlt hat war die Funktion Typename()!
Schönen Urlaub noch
Rainer
Hallo Rainer,
da kann ich Dir leider auch nicht weiterhelfen, aber richte doch Deine Anfrage mal an das Excel-Forum „www.herber.de“. Die Teilnahme ist kostenlos und das Level ist sehr hoch. Ich denke, da kann Dir geholfen werden.
Gruß,
Ptonka
Vielen Dank, ich habe mittlerweile eine Lösung erhalten: Typename(Controls(i))
Rainer