Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Active Control Finden
#1
Hallo!
Ich möchte gerne wissen welches Control Aktiv ist. Die Controls die ich abfragen möchte sind in einem Frame eingebettet und das Frame wo die Controls sind, wiederum in einen Frame. Wenn ihr euch jetzt schon die Frage stellt warum Frame in Frame, Ich benötige einen ScrollBars die mir nur die Meldungen anzeigt, der Rest der UF muss sichtbar bleiben. Es können bis zu 50 Meldungen sein, Jede Meldung wird in einen Frame dargestellt. Jedes Frame was sichtbar gemacht wird, hat TextBoxen, ComboBoxen, CheckBoxen und OptionsButton die wiederum in ein Frame eingebettet sind. In der Beispiel Datei wird es vielleicht genauer. CommandButton7 Klick das Frame mit den Caption “ Meldung's Auflistung“ wird gefüllt. Wenn ihr dann auf die Combobox in Frame Meldung1 geht und eine wert auswählt färbt sich das Frame oder ihr geht auf die OptionsButton.  
Also ich möchte gerne herausfinden in welchen Frame ich ein Control angeklickt habe um einen weiteren Code zu Starten.
Wie ist das möglich?


Angehängte Dateien
.xlsm   Anzeige Rep.xlsm (Größe: 56,77 KB / Downloads: 26)
mfg
Michael
98

WIN 7 Office 2007
Antwortento top
#2
Hallo,

es dauert zu lange die vielen Makros auf Sicherheitsrisiken zu prüfen.

mfg
Antwortento top
#3
Hallöchen,

nutze doch eine globale variable die Du bei Betätigung eines Controls mit den entsprechenden Informationen fütterst Smile
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
Antwortento top
#4
Hallo zusammen,

hat schon jemand die Datei öffnen können?
Viele Grüße
Klaus-Dieter
Antwortento top
#5
@Klaus-Dieter:

ohne Makro gab es keinerlei Probleme die Datei zu öffnen. Bis zum "timeout" habe ich keine Risiken gefunden. Form1 ist recht groß.

Es gibt "ActiveControl" wie es "ActiveCell", "ActiveSheet" bzw "ActiveWorkbook" gibt.

mfg
Antwortento top
#6
Hallo,

mit den vielen Frames ist es etwas tückig, aber teste mal mit:


Code:
Sub T_1()
Dim CC As Control
Dim C As Control
Dim Fr As Frame
Dim F As Frame

'On Error Resume Next
Debug.Print "Anf: ", UserForm1.ActiveControl.Name

   For Each CC In UserForm1.Controls
       'Debug.Print CC.Name, TypeName(CC)
       If TypeName(CC) = "Frame" And CC.Visible Then
           
           Set Fr = CC
           
           For Each C In Fr.Controls
               If Not Fr.ActiveControl Is Nothing Then
               Debug.Print , Fr.ActiveControl.Name
                   Exit For
               End If
           Next C
       End If
   Next CC

End Sub


In deiner Datei habe ich alle VBA-Codes gelöscht, wie dieser Code gestartet wird, wird in der Datei deutlich.

mfg


Angehängte Dateien
.xlsm   Anzeige Rep.xlsm (Größe: 28,14 KB / Downloads: 5)
Antwortento top
#7
Du hast mit Frames nachgebaut was MS schon eingeaut hat in Userforms: tabstrip oder Multipage.
Verwende in diesem Fall ein Tabstrip.

@Fen

Einfacher wäre:
Code:
msgbox activecontrol.parent.name
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top
#8
Hallo!

Vielen Dank für die Hilfe!
Werde jetzt erstmal Testen
mfg
Michael
98

WIN 7 Office 2007
Antwortento top
#9
Hallo,

"tabStrip" hat ich nicht gefunden und wiedereinmal das GDS (Google-Deficit-Syndrom) gehabt.

Wenn man mit der rechten Maustaste in einen freinen Raum der UserForm klickt, erhält man ein recht gutes Ergebnis (ins debug-Fenster)

Code:
Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If Button = 2 Then
        'Debug.Print Me.ActiveControl.Name, Me.ActiveControl.Parent.Name
        If InStr(1, Me.ActiveControl.Name, "Frame") > 0 Then
            Set Fr = Me.ActiveControl
            If InStr(1, Fr.ActiveControl.Name, "Frame") > 0 Then Set Fr = Fr.ActiveControl
            
            Debug.Print "--->", Fr.ActiveControl.Parent.Name, Fr.ActiveControl.Name
        Else
            Debug.Print Me.ActiveControl.Name
        End If
    End If
End Sub

mfg
Antwortento top
#10
Was ich meine:


Angehängte Dateien
.xlsb   __Tabstrip snb.xlsb (Größe: 18,82 KB / Downloads: 8)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste