Página 1 de 1

Carregar CheckBox [RESOLVIDO]

Enviado: Sex Nov 29, 2019 4:57 pm
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

Re: Carregar CheckBox

Enviado: Sex Nov 29, 2019 6:41 pm
por Reinaldo
Segue uma possibilidade
Obs.: Alterado no nome dos checkbox as terminações numéricas para Romano, afim de facilitar a rotina

Re: Carregar CheckBox

Enviado: Seg Dez 02, 2019 6:10 pm
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

Re: Carregar CheckBox

Enviado: Ter Dez 03, 2019 10:38 am
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

Re: Carregar CheckBox

Enviado: Ter Dez 03, 2019 2:13 pm
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? :)

Re: Carregar CheckBox

Enviado: Ter Dez 03, 2019 3:05 pm
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?

Re: Carregar CheckBox

Enviado: Ter Dez 03, 2019 4:22 pm
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

Re: Carregar CheckBox

Enviado: Qua Dez 04, 2019 1:35 pm
por Reinaldo
Experimente:
Cópia de Modelo Cadastro Agora Vai v789.zip
(90.36 KiB) Baixado 42 vezes

Re: Carregar CheckBox

Enviado: Qui Dez 05, 2019 3:13 pm
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