Zugriff auf Steuerelemente

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