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

Schleife mit Userform-Objekt

Schleife mit Userform-Objekt
26.01.2006 20:03:26
et999
Hallo,
nach langem hin- und herprobieren hab' ich mich doch entschlossen das Forum um Hilfe zu bitten:
Ich habe mehrere Userforms, die Reporte1, Reporte2, usw. heißen.
Ich formatiere die UF und die Elemente darin mit diesem Makro:


Reporte1.BackColor = RGB(255, 204, 0)
    For Each Objekt In Reporte1.Controls
        Select Case Left(Objekt.Name, 3)
            Case "Com"
                Objekt.BackColor = RGB(212, 5, 17)
                Objekt.ForeColor = RGB(255, 204, 0)
            Case "SCH"
                Objekt.BackColor = RGB(212, 5, 17)
                Objekt.ForeColor = RGB(255, 204, 0)
            Case "Bla"
                Objekt.BackColor = RGB(212, 5, 17)
                Objekt.ForeColor = RGB(0, 0, 102)
        End Select
    Next
Reporte2.BackColor = RGB(255, 204, 0)
   For Each ....
   ....
   Next


Für Reporte2, Reporte3 usw. habe ich das kopiert und nur die Nummer geändert.
Das gefällt mir so nicht. Ich habe versucht auch die Reporte über eine Schleife laufen zu lassen. Also etwa:
Dim Reporte as Userform
For I=1 to 7
Reporte & I.BackColor = .......
Hab's in allen Variationen porbiert, aber der Ansatz ist wohl schon falsch.
Irgendwie bin ich mit den Objekten und ihren Möglichkeiten immer noch nicht richtig vertraut.
Es geht zwar auch ohne Schleife, aber ich hätte es halt gerne etwas "schöner".
Könnt Ihr mir helfen.
Schon mal Dank im voraus
Gruß
Uwe
(:o)

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife mit Userform-Objekt
26.01.2006 20:52:07
Unbekannter Nummer Eins
Man kann Userforms nicht in einer Schleife ansprechen,da haben sich schon viele die Zähne ausgebissen.
Gruß UN1
AW: Schleife mit Userform-Objekt
26.01.2006 21:19:36
et999
Hi UN1,
Danke für die Antwort. Da bin ich immerhin beruhigt, dass ich mich doch nicht nur dämlich angestellt habe und kann das ganze für jede UF kopieren ohne mich schämen zu müssen.
Gruß
Uwe
(:o)
Wiederspruch !!!
26.01.2006 21:31:18
Nepumuk
Hi,
Da Objekt hat seine Tücken, aber wie ich immer zu sagen pflege:
Was nicht geht bekommt Räder verpasst.
Public Sub test()
    Dim objForm As Object, objControl As Object
    Dim intIndex As Integer
    For intIndex = 1 To 5
        Set objForm = UserForms.Add("UserForm" & CStr(intIndex))
        Debug.Print objForm.Name
        For Each objControl In objForm.Controls
            Debug.Print objControl.Name
        Next
    Next
End Sub

Gruß
Nepumuk

Anzeige
Nachfrage .
26.01.2006 21:45:24
Heiko S.
Hallo Nepumuk,
das hatte ich auch schon raus, aber die Eigenschaften lassen sich zwar ansprechen (also keine Fehlermeldung) aber es tut sich nichts.
Hier mal als Beispiel 3 Userforms mit je einem CommandButton, an den Farben ändert sich nichts (Ob zur laufzeit oder im VBA Editor).
Geht das dann nicht mehr oder mache ich was falsch ?

Sub UFFormat()
Dim objUF As Object
Dim objControls As Object
Dim objTest As Object
For Each objUF In ActiveWorkbook.VBProject.VBComponents
If objUF.Type = 3 Then
Set objTest = UserForms.Add(objUF.Name)
Debug.Print objTest.Name
' Hier kommt zwar kein Fehler, aber die Farbe ändert sich auch nicht.
objTest.BackColor = &HFF&
For Each objControls In objTest.Controls
Debug.Print objControls.Name
' Hier kommt zwar kein Fehler, aber die Farbe ändert sich auch nicht.
objControls.BackColor = &HFF&
Next
End If
Next objUF
End Sub

Gruß Heiko
Anzeige
AW: Nachfrage .
26.01.2006 21:56:25
Nepumuk
Hallo Heiko,
wie geschrieben, das Objekt hat seine Tücken. Du erstellst, ohne das Schlüsselwort New zu benutzen, eine neue Instanz des Userforms. D.h. du musst diese neue Instanz anzeigen, um deine Formatierung mit anzuzeigen.
Neues Beispiel:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private objForm(1 To 5) As Object

Public Sub test1()
    Dim intIndex As Integer
    For intIndex = 1 To 5
        Set objForm(intIndex) = UserForms.Add("UserForm" & CStr(intIndex))
        objForm(intIndex).BackColor = RGB(255, 204, 0)
    Next
    Call test2
End Sub

Public Sub test2()
    objForm(1).Show
End Sub

Gruß
Nepumuk

Anzeige
getestet? oT
26.01.2006 22:06:12
Gerd
o
AW: getestet? oT
26.01.2006 22:08:51
Nepumuk
Hallo Gerd,
klar:

Die Datei https://www.herber.de/bbs/user/30421.xls wurde aus Datenschutzgründen gelöscht

Gruß
Nepumuk

AW: Nachfrage .
26.01.2006 22:14:56
Heiko S.
Hallo Nepumuk,
danke für den Hinweis und die Beispieldatei, mal wieder was gelernt von dir.
Also danke nochmal und nen schönen Abend noch,
Gruß Heiko
AW: Wiederspruch !!!
26.01.2006 22:29:01
et999
Hi Nepomuk,
Danke. Dann ist VBA also auch in diesem Punkt top. Dein Makro läuft optimal.
Ich habe das entsprechend in meins eingebaut und das sieht dann so aus:


Dim objForm As Object, objControl As Object
For I = 1 To 2
Set objForm = UserForms.Add("Reporte" & CStr(I))
Debug.Print objForm.Name
objForm.BackColor = RGB(255, 204, 0)
    For Each objControl In objForm.Controls
    Debug.Print objControl.Name
        Select Case Left(objControl.Name, 3)
            Case "Com"
                objControl.BackColor = RGB(212, 5, 17)
                objControl.ForeColor = RGB(255, 204, 0)
            Case "SCH"
                objControl.BackColor = RGB(212, 5, 17)
                objControl.ForeColor = RGB(255, 204, 0)
            'Case "Lab"
            '  ForeColor = RGB(212, 5, 17)
            Case "Bla"
                objControl.BackColor = RGB(212, 5, 17)
                objControl.ForeColor = RGB(0, 0, 102)
        End Select
    Next objControl
 Next I


Auch das läuf ohne Fehlermeldung durch und ich bekomme auch alle Elemente angezeigt:
Reporte1
CommandButton1
CommandButton2
CommandButton4
CommandButton3
SCHLIESSEN
CommandButton5
CommandButton6
CommandButton7
CommandButton8
Image1
Label1
Blattwechsel2
TextHilfe
... und das gleiche nochmal für Reporte2. Wird also alles in der Schleife angespochen.
Nur - und jetzt der Wermuthstropfen - die Formatierungen, sprich Farben macht er nicht.
Bei meinem alten Code (s. Frage) hatte ich auch schon das Problem, dass er alles gemacht hat, nur komischerweise das Label1 nicht. Die Buttons gingen.
Aber daran werde ich morgen noch weitertüfteln.
Jedenfalls nochmal ein großes Dankeschön für Deinen Tip.
Gruß
Uwe
(:o)
Anzeige
AW: Wiederspruch !!!
26.01.2006 22:35:13
Rolf
Hi,
mal abgesehen davon, dass es Widerspruch heißt, ist der ganze Ansatz schlicht
Unfug.
mfg Rolf
Sorry, hatte die anderen Beitr. nicht gelesen
26.01.2006 22:40:54
et999
Hallo Nepomuk, Gerd, Horst,
ich hatte den Thread nach Nepomuks Meldung nicht weitergelesen sondern getestet und dann sofort geantwortet ohne nochmal 'reinzukucken. Wahrscheinlich ist mein letzter Beitrag also überholt. Ich schau mir das morgen nochmal an. Im Moment krieg ich keinen geraden Gedanken mehr hin.
Nochmal vielen Dank an alle.
Gruß
Uwe
(:o)

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige