Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

CheckBox Eigenschaften mit Schleife ausgeben


Betrifft: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 11:35:59

Hallo zusammen,
ich würde gerne die Eigenschaften von Controlls (hier im Test eine Checkbox) mittels einer Schleife ausgeben. Leider weiß ich nicht wie ich an die Eigenschaften heran komme.
Danke für eure Hilfe!
Gruß Joni

Sub Userforms_mit_Schleife_durchlaufen_ControllEigenschaften()
Dim i As Integer, intCounter As Integer, iProperty As Integer

  'Namen und alle Controls auflisten
  With Application.VBE.ActiveVBProject
    For i = 1 To Application.VBE.ActiveVBProject.VBComponents.Count
      If .VBComponents(i).Type = 3 Then
        'Debug.Print .VBComponents(i).Name
        If .VBComponents(i).Name = "Userform1" Then
            Debug.Print .VBComponents(i).Name
            For intCounter = 0 To .VBComponents(i).Designer.Controls.Count - 1
                If .VBComponents(i).Designer.Controls(intCounter).Name = "CheckBox1" Then
                    Debug.Print vbTab & vbTab & .VBComponents(i).Designer.Controls(intCounter).  _
_
Name
                        For iProperty = 0 To .VBComponents(i).Designer.Controls(intCounter).XXX. _
 _
Count - 1 'hier komme ich nicht weiter
                            Debug.Print .VBComponents(i).Designer.Controls(intCounter).XXX( _
iProperty).Name
                            Debug.Print .VBComponents(i).Designer.Controls(intCounter).XXX( _
iProperty).Value
                        Next iProperty
                End If
            Next intCounter
        End If
      End If
    Next
  End With
End Sub

  

Betrifft: das geht nicht. owT von: Rudi Maintaire
Geschrieben am: 27.07.2018 12:10:25




  

Betrifft: nix gut ... trotzdem danke owT von: Joni
Geschrieben am: 27.07.2018 12:19:57




  

Betrifft: AW: das geht schon... von: Herbert Grom
Geschrieben am: 27.07.2018 17:00:59

Hallo Rudi,

Du hast Post von mir!

Servus


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Nepumuk
Geschrieben am: 27.07.2018 12:17:16

Hallo Joni,

das geht nur mit einer speziellen dll die du installieren musst.

Gruß
Nepumuk


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 12:22:35

Hallo Nepumuk,
wie heißt die dll und wo kriege ich die her?
Ich bräuchte das dies Infos immer mal wieder zum testen da ich die Userforms tlw. zur Laufzeit baue/anpasse und dann an verschiedenen stellen gegenprüfen möchte wie die aktuellen Eigenschaften sind.
Danke und Gruß
Joni


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Nepumuk
Geschrieben am: 27.07.2018 12:55:09

Hallo Joni,

schau mal in den Verweisen ob du "TypLib Infomation" findest.

Gruß
Nepumuk


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 13:10:43

Hallo Nepumuk,
nein kann ich nicht finden.
Gruß Joni


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Nepumuk
Geschrieben am: 27.07.2018 13:26:03

Hallo Joni,

https://www.herber.de/bbs/user/122951.zip

entpacke die DLL, kopiere sie in den Ordner C:\Windows\SYSWOW64 und registriere sie als Administrator.

Setze dann in deiner Mappe einen Verweis auf die DLL und lass folgenden Code laufen. Die Ausgabe erfolgt im Direktbereich:


Option Explicit

Public Sub prcParseConstant4()
    
    Dim objTLIApplication As TLIApplication
    Dim objTypeLibInfo As TypeLibInfo
    Dim objCoClassInfo As CoClassInfo
    Dim objMemberInfo As MemberInfo
    
    Set objTLIApplication = New TLIApplication
    
    Set objTypeLibInfo = objTLIApplication.TypeLibInfoFromFile( _
        Filename:="C:\Windows\System32\fm20.dll")
    
    For Each objCoClassInfo In objTypeLibInfo.CoClasses
        
        If objCoClassInfo.Name = "CheckBox" Then
            
            For Each objMemberInfo In objCoClassInfo.DefaultInterface.Members
                
                With objMemberInfo
                    
                    Debug.Print .Name & Space$(50 - Len(.Name)), Switch( _
                        .InvokeKind = INVOKE_PROPERTYGET, "Lesen", _
                        .InvokeKind = INVOKE_PROPERTYPUT, "Schreiben", _
                        .InvokeKind = INVOKE_FUNC, "Methode", _
                        .InvokeKind = INVOKE_PROPERTYPUTREF, "Objekt")
                    
                End With
            Next
            
            Exit For
            
        End If
    Next
    
    Set objMemberInfo = Nothing
    Set objCoClassInfo = Nothing
    Set objTypeLibInfo = Nothing
    Set objTLIApplication = Nothing
    
End Sub

Gruß
Nepumuk


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 14:25:14

Hallo Nepumuk,
eine Ausgabe erhalte ich jetzt. Aber mir ist noch nicht klar wie ich jetzt an die Eigenschaften eines bestimmten Controls komme (zB Userform1/CheckBox1; Height, Width, Left, Top, Visible, Enabled,...). Für mich schaut es so aus als ob hier irgend welche Standardwerte ausgegeben werden die nichts mit meiner Mappe zu tun haben.
Gruß Joni


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Nepumuk
Geschrieben am: 27.07.2018 14:31:26

Hallo Joni,

du nimmst alle Eigenschaften die "schreiben" als Attribut haben und liest diese Eigenschaften aus. Beispiel:


Public Sub Beispiel()
    Const CONTROL_PROPERTY As String = "Accelerator"
    With UserForm1
        Debug.Print CallByName(.CheckBox1, CONTROL_PROPERTY, VbGet)
    End With
End Sub

Gruß
Nepumuk


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 14:58:02

Hallo Nepumuk,
jetzt hab ich es kapiert. Dann werde ich das jetzt noch schön verpacken.
Danke für deine Hilfe und ein schönen Wochenende.
Gruß Joni


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 16:37:42

Hallo Nepumuk,
ich bin jetzt fast durch. Mir ist aufgefallen, dass bestimmte Eigentschaften (zB Top oder Height) von deinem Code prcParseConstant4 nicht geliefert werden. Hast du eine Idee warum?
Gruß Joni


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Nepumuk
Geschrieben am: 27.07.2018 16:56:15

Hallo Joni,

an die "Standardeigenschaften" eines Controls kommst du damit:

If objCoClassInfo.Name = "Control" Then ' "CheckBox" Then

allerdings musst du Eigenschaften die das Control nicht hat mit On Error Goto ... abfangen.

Gruß
Nepumuk


  

Betrifft: AW: CheckBox Eigenschaften mit Schleife ausgeben von: Joni
Geschrieben am: 27.07.2018 16:58:17

Nochmal danke.
Ich bin jetzt weg, ab in den Süden :-)
Ich werde es in 2 Wochen dann mal testen.
Gruß Joni


  

Betrifft: AW: Arbeitsblatt, Formular? von: Fennek
Geschrieben am: 27.07.2018 13:12:12

Hallo,

der gezeigte Code sucht im VBE mit den genannten Schwierigkeiten.

Checkboxen im Arbeitsblatt bzw einem Formualar können aber schon gelistet werden.

mfg


Beiträge aus dem Excel-Forum zum Thema "CheckBox Eigenschaften mit Schleife ausgeben"