Textbox naam geven via VBA

Status
Niet open voor verdere reacties.

helpendehand123

Gebruiker
Lid geworden
3 mrt 2011
Berichten
260
Hallo allemaal,

Ik ben bezig met een Userform programmaatje en ik stuit op een probleem..
Ik wil aan de hand van het aantal rijen in mn sheet testboxen aanmaken..
Nu doe ik dat via het volgende script en in principe komen de tekstboxen in beeld.
Code:
Set txtB1 = Controls.Add("Forms.TextBox.1")
        With txtB1
            .Name = "TextBox" & i
            .Height = 20
            .Width = 50
            .Left = 160
            .Top = 80 + 12 * i * 2
        End With

Probleem is echter dat ik probeer via
Code:
.name = "textbox" & i
de tekstbox een naam te geven. Wanneer ik nu alleen om te controleren een msgbox aanroep met die waarde krijg ik een error dat er geen waarde is voor Textbox1.
Iemand een idee? Ik denk dat ik de tekstbox op een foutieve manier een naam probeer te geven..

Ik hoor graag :)
 
Zet in de ontwerpmodus het maximale aantal tekstvakken in het userform.
Maak ze onzichtbaar ( .visible= false)
Gebruik VBA code in de initialize-gebeurtenis alleen maar om het gewenste aantal tekstvakken zichtbaar te maken ( .visible=true).
 
Zet in de ontwerpmodus het maximale aantal tekstvakken in het userform.
Maak ze onzichtbaar ( .visible= false)
Gebruik VBA code in de initialize-gebeurtenis alleen maar om het gewenste aantal tekstvakken zichtbaar te maken ( .visible=true).

Ik weet alleen het maximaal aantal niet... dus vandaar dat ik steeds bij het aanmaken van een nieuwe rij in de sheet een textbox wil op deze manier
 
Gaat een interessant formulier worden als je een paar duizend rijen hebt. Beter is het als je volledige code en een voorbeeldbestand plaatst.

Code:
Private Sub UserForm_Initialize()
  For Each it In Me.Controls
    If TypeName(it) = "TextBox" Then j = j + 1
  Next it
  lc = Sheet1.Columns(1).SpecialCells(2).Count
  If lc > j Then
    For i = j To lc - 1
      With Controls.Add("Forms.TextBox.1")
        .Name = "TextBox" & i
        .Height = 20
        .Width = 50
        .Left = 160
        .Top = 80 + 12 * i * 2
      End With
    Next i
   Else
    For i = j To lc + 1 Step -1
      Me("TextBox" & i).Visible = False
    Next i
  End If
End Sub
 
Met een beetje handigheid kun je in de combobox hetzelfde zien als in een overbodig tekstvak.
 
Met een beetje handigheid kun je in de combobox hetzelfde zien als in een overbodig tekstvak.

Maar als je er meerdere wilt aanpassen moet je de combobox steeds aanpassen, bij deze manier alleen tab en dan kan je aanpassen ;)
 
Laatst bewerkt:
Kan het iets kryptischer ?


Wedden om een goede fles Pomerol dat het met 1 tekstvak kan ?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan