ARRAY DE MUITOS TEXTBOX
Uso VBA 6.3. Como faço para fazer um array que define a visibilidade de 75 textbox: TextBox1, TextBox2, ..., TextBox75.
Eu gostaria de definÃ-las sem ter que digitar uma a uma. Tentei isto aqui, mas não consegui:
[txt-color=#0000f0]
Dim TextBox(i) As TextBox
Dim i As Byte
For i = 1 To 75
If TextBox(i).Text <>[Ô][Ô]Then
TextBox(i).Visible = False
Else
TextBox(i).Visible = True
End If
Next i
End Sub
[/txt-color]
Como os dados são carregados após uma ordem de classificação, nuca vai ocorrer de aparecerem salteadas na form
Eu gostaria de definÃ-las sem ter que digitar uma a uma. Tentei isto aqui, mas não consegui:
[txt-color=#0000f0]
Dim TextBox(i) As TextBox
Dim i As Byte
For i = 1 To 75
If TextBox(i).Text <>[Ô][Ô]Then
TextBox(i).Visible = False
Else
TextBox(i).Visible = True
End If
Next i
End Sub
[/txt-color]
Como os dados são carregados após uma ordem de classificação, nuca vai ocorrer de aparecerem salteadas na form
O código teria que funcionar... só não entendi pq vc declarou as variáveis como textboxes.
O código tem que funcionar quando ativo o form, isto não é problema. Teve uma falha na edição, já corrigi!.
Tentei... adaptar um exemplo que encontrei...
Fazer um array citando os textboxes um a um, eu consigo fazer, mas desse outro jeito, não consigo.
Se souber como, fico muito agradecido...
Tentei... adaptar um exemplo que encontrei...
Fazer um array citando os textboxes um a um, eu consigo fazer, mas desse outro jeito, não consigo.
Se souber como, fico muito agradecido...
Os textboxes são um array no form? Ou são controles com nomes diferentes? Você pode tentar:
Dim objControle As Control
[ô]
For Each objControle In Me.Controls
If LCase(TypeName(objControle)) = [Ô]textbox[Ô] Then
objControle.Visible = False
End If
Next
[ô]
Esse comando funciona legal , mas so devem [Ô]desaparecer[Ô] as texboxes que não são preenchidas, pois elas são carregadas junto com o form..., vc consegue?
é só colocar o teu [Ô]IF[Ô] ali...
Dim objControle As Control
[ô]
For Each objControle In Me.Controls
[ô]
If LCase(TypeName(objControle)) = [Ô]textbox[Ô] Then
[ô]
If objControle.Text = [Ô][Ô] Then
objControle.Visible = False
Else
objControle.Visible = True
End If
[ô]
End If
[ô]
Next
[ô]
BELEZA!..., Consegui assim:
[txt-color=#0000f0]Dim objControle As Control
For Each objControle In Me.Controls
If LCase(TypeName(objControle)) = [Ô]textbox[Ô] And objControle = [Ô][Ô] Then
objControle.Visible = False
End If
Next[/txt-color]
Valeu mesmo...!
Agora, isso tbm vale para labels?, por exemplo, labels com caption=[Ô]+[Ô], ficarem invisiveis...
Tentei isto mas não funcionou:
[txt-color=#0000f0]For Each objControle2 In Me.Controls
If LCase(TypeName(objControle2)) = [Ô]Label[Ô] And objControle2.Tag = [Ô]+[Ô] Then
objControle2.Visible = False
End If
Next[/txt-color]
[txt-color=#0000f0]Dim objControle As Control
For Each objControle In Me.Controls
If LCase(TypeName(objControle)) = [Ô]textbox[Ô] And objControle = [Ô][Ô] Then
objControle.Visible = False
End If
Next[/txt-color]
Valeu mesmo...!
Agora, isso tbm vale para labels?, por exemplo, labels com caption=[Ô]+[Ô], ficarem invisiveis...
Tentei isto mas não funcionou:
[txt-color=#0000f0]For Each objControle2 In Me.Controls
If LCase(TypeName(objControle2)) = [Ô]Label[Ô] And objControle2.Tag = [Ô]+[Ô] Then
objControle2.Visible = False
End If
Next[/txt-color]
Beleza!!!!!
[txt-color=#0000f0] For Each objControle2 In Me.Controls
[ô]
If LCase(TypeName(objControle2)) = [Ô]label[Ô] Then
[ô]
If objControle2.Caption = [Ô]+[Ô] Then
objControle2.Visible = False
Else
objControle2.Visible = True
End If
[ô]
End If
[ô]
Next[/txt-color]
Adaptei tua ajuda, Valeu mesmo, RESOLVIDO!.
[txt-color=#0000f0] For Each objControle2 In Me.Controls
[ô]
If LCase(TypeName(objControle2)) = [Ô]label[Ô] Then
[ô]
If objControle2.Caption = [Ô]+[Ô] Then
objControle2.Visible = False
Else
objControle2.Visible = True
End If
[ô]
End If
[ô]
Next[/txt-color]
Adaptei tua ajuda, Valeu mesmo, RESOLVIDO!.
Não funcionou pq a função [Ô]LCASE[Ô] retorna a string passada em MINUSCULO.
Ou seja, você precisa testar
Ou seja, você precisa testar
if lcase([Ô]LABEL[Ô]) = [Ô]label[Ô] then
endif
Deu certinho mesmo, este que te informei antes, tá perfeito...
Mas por curiosidade vou testar depois como vc falou agora... até mais!.
Mas por curiosidade vou testar depois como vc falou agora... até mais!.
O [Ô]IF[Ô] que eu coloquei foi metafórico... você precisa testar o resultado do LCASE com uma string minúscula.
Tópico encerrado , respostas não são mais permitidas