Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

alle Captions in allen Userforms auflisten

alle Captions in allen Userforms auflisten
03.07.2006 05:59:25
Turbo
Hallo,
ich habe eine Frage. Ich möchte in mit einer Schleife alle Userforms einer Arbeitsmappe durchlaufen und dann in jeder einzelnen Userform die einzelen Controls durchlaufen und jeden Caption-Eintrag in eine externe Tabelle schreiben (die Bezeichnugen sollen übersetzt werden).
Sobald ich die Werte in Variabelen stehen habe, kann ich diese dann in Tabellen schreiben.
Aber wie komme ich an die Caption-Werte ran. Welche Verweise müssen bei einem solchen Vorhaben aktiviert sein!?
Wäre nett, wenn mir jemand da für den Anfang auf die Sprünge helfen könnte, weiß nämlich nicht, wie ich auf die einzelnen Userforms in einer Schleife zugreifen kann. Die Userforms haben alle NAmen in der Art frmABCDEEFG. Wenn ich die Userform dann als Objekt ansprechen kann, kann ich alle Controls durchlaufen und die Controls "bearbeiten", deren Caption "" sind oder diese Eigenschaft gar nicht besitzen.
Ich hoffe, das Problem ist klar. Vorab schon mal vielen Danl fürs Lesen :)
Gruß Turbo

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle Captions in allen Userforms auflisten
03.07.2006 08:03:48
Heiko
Moin Turbo ?,
z.B. so. Ausgabe im aktuellen Tabellenblatt ab Zeile 40.

Private Sub CommandButton16_Click()
Dim objUF As Object
Dim objControls As Control
Dim objHelp As Object
Dim lngi As Long
lngi = 1
With ActiveWorkbook.VBProject
For Each objUF In .VBComponents
If objUF.Type = 3 Then
Set objHelp = UserForms.Add(objUF.Name)
For Each objControls In objHelp.Controls
ActiveSheet.Cells(lngi + 39, 1) = objUF.Name
On Error Resume Next
ActiveSheet.Cells(lngi + 39, 2) = objControls.Caption
On Error GoTo 0
lngi = lngi + 1
Next objControls
End If
Next objUF
End With
Exit Sub
' Bei Fehlernummer 1004, diese Meldung ausgeben.
Errorhandler:
If Err.Number = 1004 Then
MsgBox "Der Zugriff auf den VBA Coode ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung vom XYZ "
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
Kleine aber feine Verbesserung !!!
03.07.2006 08:17:12
Heiko
Hallo Turbo ?,
oder besser noch so !!!

Private Sub CommandButton16_Click()
Dim objUF As Object
Dim objControls As Control
Dim objHelp As Object
Dim lngi As Long
Dim strhelp As String
lngi = 1
On Error GoTo Errorhandler
With ActiveWorkbook.VBProject
On Error GoTo 0
For Each objUF In .VBComponents
If objUF.Type = 3 Then
Set objHelp = UserForms.Add(objUF.Name)
For Each objControls In objHelp.Controls
On Error Resume Next
strhelp = objControls.Caption
If Err.Number = 0 Then
ActiveSheet.Cells(lngi + 39, 1) = objUF.Name
ActiveSheet.Cells(lngi + 39, 2) = objControls.Name
ActiveSheet.Cells(lngi + 39, 3) = objControls.Caption
lngi = lngi + 1
End If
On Error GoTo 0
Next objControls
End If
Next objUF
End With
Exit Sub
' Bei Fehlernummer 1004, diese Meldung ausgeben.
Errorhandler:
If Err.Number = 1004 Then
MsgBox "Der Zugriff auf den VBA Coode ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung vom XYZ "
Else
MsgBox "Err.Number = " & Err.Number & ".   " & Err.Description, vbCritical
End If
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Kleine aber feine Verbesserung !!!
03.07.2006 15:21:42
Stefan
Hallo Heiko,
toll.. genau den Einstieg benötigte ich, hat alles funktioniert. Vielen Dank für den Code.
Nun hatte ich noch einen Einfall, kann ich auch alle Module in der Arbeitsmappe durchsuchen und nach MSGBOX suchen? Also in den Moduls und Userforms. Wenn ich dann den Suchstring lokalisiert habe, kann ich dann sicher auch den entsprechenden TExt, der in dieser Funktion eingefügt ist herauskopieren und in eine Tabelle schreiben.
Wie suche ich in Modulen nach Text!?
Vielleicht gibts da ja auch einen einfachen Ansatz.
Gruß
Stefan
AW: Kleine aber feine Verbesserung !!!
03.07.2006 17:29:30
Nepumuk
Hallo Stefan,
ein Ansatz:
Public Sub test()
    Dim objModul As Object
    Dim lngLine As Long, lngColumn As Long
    With ThisWorkbook.VBProject
        For Each objModul In .VBComponents
            With objModul.CodeModule
                lngLine = 1: lngColumn = 1
                Do
                    If .Find("MsgBox", lngLine, lngColumn, _
                        -1, -1, True, False, True) Then
                        Debug.Print .Lines(lngLine, 1)
                        lngLine = lngLine + 1
                    Else
                        Exit Do
                    End If
                Loop
            End With
        Next
    End With
End Sub

Den Text aus den MsgBox rausholen kannst du selbst :-)
Gruß
Nepumuk
Anzeige
AW: Kleine aber feine Verbesserung !!!
03.07.2006 18:11:35
Stefan
Hallo Nepumik,
danke für den schnellen Support.. die Basics kann ich dann selbst und wenn ich das andere einmal weiß, vergesse ich es auch nicht mehr ... ;-)
Werden mit Deiner Schleife denn auch der in den Userforms hinterlegt Code durchsucht!?
Gruß
Stefan
AW: Kleine aber feine Verbesserung !!!
03.07.2006 18:14:26
Nepumuk
Hallo Stefan,
Jedes Modul der Mappe !!!
Gruß
Nepumuk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige