Notifications
Clear all

for para checkbox

8 Posts
3 Usuários
0 Reactions
1,421 Visualizações
(@tchesky)
Posts: 3
New Member
Topic starter
 

Pessoal, preciso aplicar um for para checkbox, mas não consegui resolver, segue o código:

For b = 1 To 4
If Plan1.Cells(b, 1) <> "" Then
checkbox1 = True
Else
checkbox1  = False
End If
Next b

Porém, são vários checkbox, então preciso trocar o endereço do checkbox pela variável b, mas não sei escrever isso.
checkbox b, checkbox & b não funcionam.

valew pessoal

 
Postado : 10/12/2017 10:53 am
(@klarc28)
Posts: 971
Prominent Member
 
Sub teste()
Dim cl As Object

For Each cl In UserForm1.Controls

If TypeName(cl) = "CheckBox" Then

If cl.Name = "CheckBox" & b Then

End If

End If

Next cl


End Sub
 
Postado : 10/12/2017 11:14 am
(@klarc28)
Posts: 971
Prominent Member
 

https://www.youtube.com/watch?v=C98aRMcKXO4

 
Postado : 10/12/2017 11:16 am
(@tchesky)
Posts: 3
New Member
Topic starter
 
Sub teste()
Dim cl As Object

For Each cl In UserForm1.Controls

If TypeName(cl) = "CheckBox" Then

If cl.Name = "CheckBox" & b Then

End If

End If

Next cl


End Sub

Opa, não consegui entender teu código, talvez tenha me expressado mal.
o que eu fiz?
usei um checkbox pra preencher uma célula, agora quero fazer o contrario, testar a célula, se ela estiver preenchida então quero que o checkbox respectivo ative. como vou ter q testar mais de 30 linhas não quero escrever:

if plan1,cells(1,1) <> "" then
checkbox1 = true
end if
pra cada linha e pra cada respectivo checkbox.

Pensei em escrever assim:

For b = 1 To 30
If Plan1.Cells(b, 1) <> "" Then
CheckBox (b) = True
Else
CheckBox (b) = False
End If
Next b

então a variável b altera a linha e o endereço do checkbox. o problema tá na parte em vermelho, o vba não aceita aquele (b).

 
Postado : 10/12/2017 11:45 am
(@klarc28)
Posts: 971
Prominent Member
 
Option Explicit

Sub teste()
    Dim cl As Object
    Dim b As Integer
    For b = 1 To 30
        'percorre todos os controles do formulário
        For Each cl In UserForm1.Controls
            'se o controle for CheckBox
            If TypeName(cl) = "CheckBox" Then
                'se o nome do controle for CheckBox concatenado com o valor de b
                If cl.Name = "CheckBox" & b Then
                    'quando entrar aqui você tem o CheckBox desejado
                    'É o cl
                    'Então você pode alterar o valor dele
                    'Por exemplo:
                    If Plan1.Cells(b, 1) <> "" Then
                        cl.Value = True
                    Else
                        cl.Value = False
                    End If
                End If
                
            End If
            
        Next cl
        
    Next b
End Sub


 
Postado : 10/12/2017 11:48 am
(@tchesky)
Posts: 3
New Member
Topic starter
 
Option Explicit

Sub teste()
    Dim cl As Object
    Dim b As Integer
    For b = 1 To 30
        'percorre todos os controles do formulário
        For Each cl In UserForm1.Controls
            'se o controle for CheckBox
            If TypeName(cl) = "CheckBox" Then
                'se o nome do controle for CheckBox concatenado com o valor de b
                If cl.Name = "CheckBox" & b Then
                    'quando entrar aqui você tem o CheckBox desejado
                    'É o cl
                    'Então você pode alterar o valor dele
                    'Por exemplo:
                    If Plan1.Cells(b, 1) <> "" Then
                        cl.Value = True
                    Else
                        cl.Value = False
                    End If
                End If
                
            End If
            
        Next cl
        
    Next b
End Sub


Agora entendi, testei e funcionou, valew aeee.

 
Postado : 10/12/2017 12:13 pm
(@klarc28)
Posts: 971
Prominent Member
 

Favor marcar como resolvido.

 
Postado : 10/12/2017 12:18 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Tchesky,

Boa tarde!

Solicitamos, por gentileza, sempre que inserir código VBA aqui no fórum, fazer uso da ferramenta CODE que fica localizado logo acima da caixa de mensagens. Isso manterá o fórum de forma organizada.

Quando sua dúvida estiver resolvida, clique na mãozinha existente aos lado da ferramenta CITAR que fica localizado no canto superior direito da caixa de mensagens para votar positivamente no colega que o ajudou e também feche seu tópico clicando na ferramenta RESOLVIDO.

A pontuação positiva pode ser dada a mais de uma resposta e mais de um usuário. Esse é um Incentivo para que os integrantes do fórum continuem contribuindo.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 10/12/2017 1:31 pm