Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Carregar CheckBox [RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
AjHottz
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Nov 27, 2019 5:05 pm

Carregar CheckBox [RESOLVIDO]

Mensagem por AjHottz »

Boa tarde gente,
uso o seguinte código para selecionar os valores das checkbox marcadas e preencher a planilha excel

Código: Selecionar todos

Private Sub CarregaRegistro()
'carrega os dados do primeiro registro
     'Variável para armazenar 14 controles
    Dim ctlNome(1 To 14) As String
    'Variável para podermos trabalhar apenas nos controles do Form
    Dim ctlChk As Control
    'Variável para controle dos objetos
    Dim contador As Integer
    Dim a As Long
    
    'Laço FOR EACH para validarmos quais CheckBox estão marcados
    For Each ctlChk In Me.Frame10.Controls
        'Se o tipo do nome do controle for igual a CheckBox e o mesmo estiver flagado
        If TypeName(ctlChk) = "CheckBox" And ctlChk = True Then
            'Incrementamos o contador
            contador = contador + 1
            'Adicionamos seu texto á lista de variáveis (15)
            ctlNome(contador) = ctlChk.Caption
        End If
    Next
    
    'Variável para armazenar todos os CheckBoxes flagados
    Dim listaIncisos As String
    
    'Verificamos quais dentre os 39 estão marcados
    For a = 1 To UBound(ctlNome)
        'Se a variável de id "a" for diferente de nula
        If ctlNome(a) <> "" Then
            'Adicionamos o texto do checkbox e concatenamos a variável o caracter ,
            listaIncisos = listaIncisos & ctlNome(a) & " , "
        End If
    Next
    .Cells(indice, colHomePage).Value = Mid(listaIncisos, 1, Len(listaIncisos))
    
E funciona perfeitamente, porém gostaria de quando carregar determinado registro, essas checkbox carregassem marcadas de acordo com o valor dessa célula. É possível?


Muito obrigado da ajuda de todos vocês,
Sou novo no fórum mas percebi que estão sempre dispostos a ajudar
Anexos
Modelo Cadastro Agora Vai.zip
(64.44 KiB) Baixado 227 vezes
Editado pela última vez por AjHottz em Qui Dez 05, 2019 3:17 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Carregar CheckBox

Mensagem por Reinaldo »

Segue uma possibilidade
Obs.: Alterado no nome dos checkbox as terminações numéricas para Romano, afim de facilitar a rotina
Anexos
Cópia de Modelo Cadastro Agora Vai.zip
(68.9 KiB) Baixado 228 vezes


AjHottz
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Nov 27, 2019 5:05 pm

Re: Carregar CheckBox

Mensagem por AjHottz »

Reinaldo, Muito obrigado da ajuda, funcionou perfeitamente no que você fez maaaaas... Não consigo replicar ele pros outros Checkbox. Pode me ajudar?
Além do checkbox agora também existem optionbuttons. Acredito que seja parecido o procedimento mas tentei de todas as formas e não conseguir replicar

Segue planilha em anexo
Anexos
Modelo Cadastro Agora Vai quase finalizado.zip
(69.74 KiB) Baixado 201 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Carregar CheckBox

Mensagem por Reinaldo »

"...pros outros Checkbox..." --> Não consegui entender/visualisar onde será(ão) armazenado esses novos checkbox's
Para Option, pela maneira que está no projeto a maneira encontrada foi incluir a rotina "CarregaParecer"

Código: Selecionar todos

Private Sub CarregaParecer()
'Verifica e "carrega" (se houver); parecer primeiro Conselheiro
If wsCadastro.Cells(indiceRegistro, colVoto1).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto1).Value = "Favorável" Then
    Me.OptionButton6 = True
ElseIf wsCadastro.Cells(indiceRegistro, colVoto1).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto1).Value = "Desfavorável" Then
    Me.OptionButton7 = True
End If
'Verifica e "carrega" (se houver); parecer Segundo Conselheiro
If wsCadastro.Cells(indiceRegistro, colVoto2).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto2).Value = "Favorável" Then
    Me.OptionButton8 = True
ElseIf wsCadastro.Cells(indiceRegistro, colVoto2).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto2).Value = "Desfavorável" Then
    Me.OptionButton9 = True
End If
'Verifica e "carrega" (se houver); parecer Terceiro Conselheiro
If wsCadastro.Cells(indiceRegistro, colVoto3).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto3).Value = "Favorável" Then
    Me.OptionButton10 = True
ElseIf wsCadastro.Cells(indiceRegistro, colVoto3).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto3).Value = "Desfavorável" Then
    Me.OptionButton11 = True
End If
'Verifica e "carrega" (se houver); parecer quarto Conselheiro
If wsCadastro.Cells(indiceRegistro, colVoto4).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto4).Value = "Favorável" Then
    Me.OptionButton12 = True
ElseIf wsCadastro.Cells(indiceRegistro, colVoto4).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto4).Value = "Desfavorável" Then
    Me.OptionButton13 = True
End If
'Verifica e "carrega" (se houver); parecer quinto Conselheiro
If wsCadastro.Cells(indiceRegistro, colVoto5).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto5).Value = "Favorável" Then
    Me.OptionButton14 = True
ElseIf wsCadastro.Cells(indiceRegistro, colVoto5).Value <> "" And wsCadastro.Cells(indiceRegistro, colVoto5).Value = "Desfavorável" Then
    Me.OptionButton15 = True
End If
EndSub
E alterar a "limpeza" dos Checkbox, incluindo tambem os options

Código: Selecionar todos

Private Sub Limpa_Checkbox()
Dim control As control
Dim x As Integer
    For Each control In Me.Frame10.Controls
        control.Value = 0
    Next
    For x = 6 To 15
    Me.Controls("OptionButton" & x) = False
    Next
End Sub
Segue seu modelo/exemplo alterado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


AjHottz
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Nov 27, 2019 5:05 pm

Re: Carregar CheckBox

Mensagem por AjHottz »

Nossa Reinaldo, você é muito sinistro, os optionbuttons ficaram certinhos. A limpeza eu tinha colocado na Sub LimpaControles, mas por ser muito leigo em VBA, coloquei um por um. Você fez tudo rapidinho rs.

Quanto aos checkBox: Os do frame11 devem preencher e carregar a coluna M (colAgravantes),
os do frame10, foi o que você me ajudou e preenche e carrega a coluna N (colHomePage)
Os do frame13 devem preencher e carregar a coluna U (colAgravantes2),
Os do frame14 devem preencher e carregar a coluna V (colIncisos2).

Porém o código que usei pra preencher a coluna N, não consegui replicar para as outras. Pode me ajudar com isso também? :)
Anexos
Cópia de Modelo Cadastro Agora Vai quase finalizado.zip
(71.76 KiB) Baixado 197 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Carregar CheckBox

Mensagem por Reinaldo »

Não localizei frame15 em seu projeto somente 10/11/12/13.
Considero Frame 12 na coluna V e Frame 13 na coluna U ?
Considero também que a exemplo do Frame10 o Frame12 "carregue" os números romanos dos incisos I II....XIII; correto?
O que "carregar" dos Frames 11 e 13 ?
A descrição dos Caption/Label's são bem extensas e não faz, a meu ver, sentido utiliza-las; alternativa?


AjHottz
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Nov 27, 2019 5:05 pm

Re: Carregar CheckBox

Mensagem por AjHottz »

Consegui gravar nas células, só não consigo carregar os checkboxes quando puxo o registro.
Único problema que quando deixo o checkbox em branco ele retorna um erro. Como consigo resolver isso?
Nos frames 11 e 13 são 3 opções que preciso na mesma célula para filtrar depois, pois são agravantes.

Segue modelo com os checkbox gravando, mas precisam estar marcados para não retornar erro
Anexos
Modelo Cadastro Agora Vai v789.zip
(76.7 KiB) Baixado 199 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Carregar CheckBox

Mensagem por Reinaldo »

Experimente:
Cópia de Modelo Cadastro Agora Vai v789.zip
(90.36 KiB) Baixado 223 vezes


AjHottz
Colaborador
Colaborador
Mensagens: 14
Registrado em: Qua Nov 27, 2019 5:05 pm

Re: Carregar CheckBox

Mensagem por AjHottz »

Reinaldo, ficou perfeito!!!!
Muito obrigado, sem você não sei se esse projeto sairia.
Deixo aqui minha planilha final caso alguém queira usar para alguma coisa

Muito obrigado mesmo.
Senha: 1234
Anexos
Planilha Conselho Diretor vFinal6.zip
(108.64 KiB) Baixado 249 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder