Label naam vullen met variabele.

Status
Niet open voor verdere reacties.

Woffels

Gebruiker
Lid geworden
8 jan 2006
Berichten
251
Goed middag.

Ik heb een sheet met 15 labels:

De labels heten:
Label1_Test
Label2_Test
Label3_Test
.
.
Label15_Test

Nu wil ik het cijfer in de labelnaam vervangen door een variabele (Variabele heet bv: a) zodat de variabele bepaald in welke textbox een waarde geschreven wordt dmv een functie:

Zoiets als dit:


Code:
Private Sub Button1_Click()
q = Range("Nummer").Value
Call Fill_Label(q)
End Sub


Function Fill_Label(a)
Label(a)_Test.Value = "Pietje"
End Fuction

Hoe moet ik die variabele nu inpassen: Label(a)_Test.Value werkt natuurlijk niet!!!
 
Label(a)_Test.Caption = "Pietje"

Dat soort dingen kan je overigens eenvoudig in de eigenschappen van het object zien als het een ActiveX control is.
 
Laatst bewerkt:
Bedankt voor het snelle antwoord.
Ik bedoelde eigenlijk Caption ipv Value, maar het gaat mij om de variabele (a in dit geval) die veranderd. Hoe noteer ik dat?
 
Code:
Function Fill_Label(a)
     Me("Label" & a &"_Test").Caption = "Pietje"
End Fuction
 
Maar je bestandje is weer totaal anders, dit zijn geen labels maar objecten; sowieso zou ik dit op een formulier doen, dan werkt mijn oplossing. Met losse objecten op een werkblad is het een heel ander verhaal. Ik zou met een lus de nummers uitlezen en de juiste pakken.
Zal eens naar kijken of dat werkt!
 
Zoiets dan:
Code:
Sub tst()
    VarA = "TextBox1_Test"
    VarB = "Pietje"
    
    With ActiveSheet
        For Each objx In .OLEObjects
            If TypeName(objx.Object) = "TextBox" Then
                Select Case objx.Name
                    Case VarA
                        objx.Object.Text = VarB
                End Select
            End If
        Next
    End With
End Sub

Uiteraard kan VarA ook weer worden opgebouwd uit variabelen, waaronder een nummer.
 
Dan krijg je zoiets:
Code:
Function VulDeJuisteTextbox(a)

    For i = 1 To ActiveSheet.Shapes.Count
        With ActiveSheet.Shapes(i)
            Select Case .Type
                Case msoOLEControlObject
                    If .Name = "TextBox" & a & "_Test" Then
                        .Value = "Pietje"
                        Exit For
                    End If
            End Select
        End With
    Next i

End Function
 
Zoiets dan:
Code:
Sub tst()
    VarA = "TextBox1_Test"
    VarB = "Pietje"
    
    With ActiveSheet
        For Each objx In .OLEObjects
            If TypeName(objx.Object) = "TextBox" Then
                Select Case objx.Name
                    Case VarA
                        objx.Object.Text = VarB
                End Select
            End If
        Next
    End With
End Sub

Uiteraard kan VarA ook weer worden opgebouwd uit variabelen, waaronder een nummer.

Is dit dan niet voldoende ?

Code:
Sub M_snb()
   activesheet.oleobjects("Textbox1_test").object.text="Pietje"
End Sub
 
Kan uiteraard maar dan is de naam en het nummer niet variabel. Tevens wilde ik de andere mogelijkheden laten zien.
 
toch wel :

Code:
Sub M_snb()
   for j=1 to 12
      activesheet.oleobjects("Textbox" & j & "_test").object.text=choose(j,"Pietje","Edje",etc')
   next
End Sub

Het aardige van een collection (en ook een dictionary) vergeleken met een array is, dat ze met de 'sleutel' (key) direkt aangeroepen kunnen worden. Een lus om te controleren of het een tektsvak is en of het wel het tekstvak met een bepaalde naam is, is dan niet meer nodig.
 
Ik zei ook niet dat het niet kon, alleen dat het in je voorbeeld niet werd getoond ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan