2012-05-11 1 views
13

Próbuję dynamicznie dodawać przyciski do formularza użytkownika, ale formularz użytkownika jest pusty. Ive uprościć istotę kodu jak najwięcej dla sprawdzania błędów (nie, że to pomogło mi)Dynamiczne dodawanie etykiet do formularza użytkownika = pusty UserForm

Sub addLabel() 
UserForm2.Show  
Dim theLabel As Label 
Dim labelCounter As Integer 

For labelCounter = 1 To 3 
    Set Label = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True) 
    With theLabel 
     .Caption = "Test" & labelCounter 
     .Left = 10 
     .Width = 50 
     .Top = 10 
    End With 
End Sub 

jest jakiś sposób na sprawdzenie, czy przyciski zostały dodane, ale są niewidoczne? Lub dlaczego nie są dodawane. Każda pomoc bardzo doceniona.

Odpowiedz

20

kilka rzeczy:

  1. Trzeba pokazać UserForm jak vbModeless - inny kod zatrzymuje się na UserForm2.Show
  2. Tworzysz obiekt o nazwie Label następnie korzystając With na theLabel
  3. Będziesz następnie trzeba zwiększyć pozycję trzech etykiet, aby uniknąć nakładania się (co zrobiłem przy użyciu Top).

    Sub addLabel() 
    UserForm2.Show vbModeless 
    Dim theLabel As Object 
    Dim labelCounter As Long 
    
    For labelCounter = 1 To 3 
        Set theLabel = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True) 
        With theLabel 
         .Caption = "Test" & labelCounter 
         .Left = 10 
         .Width = 50 
         .Top = 10 * labelCounter 
        End With 
    Next 
    End Sub 
    
+0

Dziękuje bardzo za opinie. Kopiuję i wklejaję twój kod bezpośrednio do modułu UserForm2, wciskam klawisz f5, formularz ładuje się, ale wciąż jest pusty. Otworzyłem nawet zupełnie nową książkę o pracy, powtórzyłem powyższe kroki, zapisałem nowy skoroszyt i naciśnij uruchom, a nadal pozostaje pusty formularz. Czy istnieje potencjalnie ustawienie, które muszę zmienić lub coś zewnętrznego poza kodem, ponieważ twój kod wygląda tak, jak robi to dokładnie to, co chciałem, ale to nie robi: S Jeszcze raz dziękuję! – BiGXERO

+0

@BiGXERO spróbuj uruchomić kod ze standardowego modułu. – brettdj

+1

OMG! Oczywiście! Dziękuję bardzo. Właśnie dlatego kocham tę stronę. Jesteś dobrą osobą! – BiGXERO

-4

try poniżej kod

Set theLabel = UserForm2.Designer.Controls.Add("Forms.Label.1", "Test1", True) 
+0

osób, które zgłaszają co najmniej, dlaczego ... –

+0

Korzystanie z Projektanta jest w tym przypadku leniwe i niebezpieczne. Pokazuje brak zrozumienia obiektu Forms i sposobu interakcji z nimi – FinancialRadDeveloper