Notifications
Clear all

Concatenando Objetos e Variáveis para a criação de funções

8 Posts
2 Usuários
0 Reactions
2,010 Visualizações
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Amigos, como já comentei algumas vezes, ainda estou engatinhando em VBA e estou tentando desenvolver algo com as funções For e With.
Veja o exemplo que estou criando:

For i = 21 To 60
    With TextBox & i
            .Enabled = True
            .BackColor = &H80000005
    End With
Next i

Nesse exemplo em questão, estou querendo ativar uma sequencia de textboxs e mudar a cor delas.
Tento concatenar o objeto Textbox com a Variável I mais sem sucesso...
O que está de errado nesse código?
É assim mesmo que se faz? A lógica está correta?

 
Postado : 15/08/2013 11:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Temos de lidar com o tipo de controle, de uma olhada no tópico abaixo se ajuda :

contar textBox
viewtopic.php?f=10&t=1759&start=10

[]s

 
Postado : 15/08/2013 11:33 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Puxa Mauro... li e reli o tópico mais não consegui entender..
Tentei aplica-lo mais tb não entendi a lógica da coisa...

Será que o amigo não poderia exemplificar com o meu caso se não for muito trabalhoso?

Desde já agradeço!
Forte abraço meu Caro!

 
Postado : 16/08/2013 6:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

De uma olhada se é isto, utilizei a proprieddade "TypeOf" onde lidamos com o tipo do controle, tambem podemos trabalhar com a propriedade "TypeName" para identificar os controles pelos nomes.

[]s

 
Postado : 16/08/2013 8:56 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Mauro, batata meu caro!
Funcionou beleza!
Só que eu gostaria de entender melhor essa linha:

If TypeOf cadastro.Controls(i) Is MSForms.TextBox Then

Será que você poderia me explicar como ela funciona?
Quero aprender para poder ir aos poucos acumulando conhecimento e não ficar tão dependente assim...

Desde já agradeço e já marquei o Tópico como resolvido! ;)

 
Postado : 16/08/2013 10:41 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Outra coisa Mauro, tentei adaptar o seu exemplo só que dessa vez com Combobox's.

Dim i As Integer
For i = 2 To 4
If TypeOf UserForm1.Controls(i) Is MSForms.TextBox Then
UserForm1.Controls(i).BackColor = vbYellow
End If
Next i

Não sei o porque, mais não funcionou de jeito nenhum..

 
Postado : 16/08/2013 11:07 am
(@wolneypk)
Posts: 188
Reputable Member
Topic starter
 

Essa contagem do For, não é referente ao nome das TextBox's?

 
Postado : 16/08/2013 11:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Outra coisa Mauro, tentei adaptar o seu exemplo só que dessa vez com Combobox's.

Dim i As Integer
For i = 2 To 4
If TypeOf UserForm1.Controls(i) Is MSForms.TextBox Then
UserForm1.Controls(i).BackColor = vbYellow
End If
Next i

Não sei o porque, mais não funcionou de jeito nenhum..

Wolney cada "Control" tem o nome especifico, então para ComboBox,seria :

If TypeOf UserForm1.Controls(i) Is MSForms.ComboBox Then

Se fosse controle CheckBox, seria:
If TypeOf UserForm1.Controls(i) Is MSForms.CheckBox Then

Quanto a expressão TypeOf - estamos nos referindo ao tipi de controle, temos tambem "TypeName" onde nos referimos aos nomes dos controles.

Veja algumas referencias:
CheckBox: Forms.CheckBox.1
ComboBox: Forms.ComboBox.1
CommandButton: Forms.CommandButton.1
Frame: Forms.Frame.1
Image: Forms.Image.1
Label: Forms.Label.1
ListBox: Forms.ListBox.1
MultiPage: Forms.MultiPage.1
OptionButton: Forms.OptionButton.1
ScrollBar: Forms.ScrollBar.1
SpinButton: Forms.SpinButton.1
TabStrip: Forms.TabStrip.1
TextBox: Forms.TextBox.1
ToggleButton: Forms.ToggleButton.1

Adicionando controles dinamicamente no VBA
http://www.tomasvasquez.com.br/blog/mic ... nte-no-vba

Loop Through Controls on a UserForm. Textbox, ComboBox, CheckBox etc
http://www.ozgrid.com/VBA/control-loop.htm

Se pesquisar na Net por :
TypeOf UserForm1.Controls excel vba
encontrara uma infinidade de links a respeito.

[]s

 
Postado : 16/08/2013 6:01 pm