Página 1 de 3
Ajuda - Varios Checkbox em uma unica célula
Enviado: Ter Fev 14, 2017 10:06 pm
por Pichol
Boa noite a todos, estava precisando de uma ajuda com checkbox...
A situação é a seguinte, estou elaborando um Form onde terão vários checkbox para o usuário ir marcando, conforme ele marcar essas opções como verdadeiro, será armazenado em uma única celula esses dados em texto.
Por exemplo, o usuário marcou os checkbox 1, 2 e 3, então após clicar no command button de enviar, será armazenado esses valores da seguinte forma dentro da celula checkbox1 / checkbox2 / checkbox3
PS: Preciso fazer isso para uns 40 checkbox mas dificilmente o usuario irá flagar mais de 5 checkbox....
É possível elaborar isso?
Obrigado.
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Qua Fev 22, 2017 9:23 pm
por srobles
Pichol,
Adicione o código abaixo, no botão do seu Form :
Código: Selecionar todos
'Variável para armazenar 39 controles
Dim ctlNome(1 To 40) 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
'Laço FOR EACH para validarmos quais CheckBox estão marcados
For Each ctlChk In Me.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 (39)
ctlNome(contador) = ctlChk.Caption
End If
Next
'Variável para armazenar todos os CheckBoxes flagados
Dim listaOpcoes 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 /
listaOpcoes = listaOpcoes & ctlNome(a) & " / "
End If
Next
'Escrevemos na célula A1 o resultado final
ThisWorkbook.Sheets("Plan1").Range("A1") = Mid(listaOpcoes, 1, Len(listaOpcoes))
Aguardo retorno.
Abs
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Sáb Mai 05, 2018 9:58 pm
por nhyky12@gmail.com
Ola minha duvida e igual, a diferença que as 40 checkbox que tenho (arroz,feijão,batata..), devem preencher uma textbox. Isso seria uma lista de compras e os itens selecionados ficariam em uma unica textbox. Ou seja, queria que a propriedade capiton das checkbox , preechar a textbox.
Como eu poderia fazer isso?
Agradeço a ajuda.
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Dom Mai 06, 2018 1:15 pm
por srobles
nhyky,
Veja se o exemplo abaixo atende sua necessidade. Apenas se atente em chamar esta rotina no evento click de cada checkbox.
Código: Selecionar todos
Sub validarSelecao()
'Variável para armazenar 39 controles
Dim ctlNome(1 To 40) 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
'Laço FOR EACH para validarmos quais CheckBox estão marcados
For Each ctlChk In Me.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 (39)
ctlNome(contador) = ctlChk.Caption
End If
Next
'Variável para armazenar todos os CheckBoxes flagados
Dim listaOpcoes As String
listaOpcoes = ""
'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 com o caracter "," (vírugula)
listaOpcoes = listaOpcoes & ctlNome(a) & ", "
End If
Next
'Escrevemos no TextBox o resultado final
Me.TextBox1 = Mid(listaOpcoes, 1, Len(listaOpcoes)-2)
End Sub
Espero ter ajudado.
Abs
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 6:04 pm
por nhyky12@gmail.com
Ola meu amigo:
erro na linha: If TypeName(ctlChk) = "CheckBox" And ctlChk = True Then
Numero de argumentos incorreto ou atribuição de propriedade invalida
Que sera que estou errando?
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 6:44 pm
por srobles
nhyky,
Amigo, montei um exemplo com o mesmo código que postei e não foram gerados erros. Todavia, deixo o modelo em anexo para estudos.
Abs
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 6:59 pm
por nhyky12@gmail.com
Muito obrigado.
Descobri o problema, se houver algum frame no formulário da aquele erro. Estranho !
Tente ai e veja.
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 7:42 pm
por srobles
nhyky,
Realmente não me atentei á questão do Frame. Todavia, basta modificar a linha :
Por :
E o problema se resolve.
Espero ter ajudado.
Abs
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 8:08 pm
por nhyky12@gmail.com
Amigo srobles
Mais uma pequena duvida.
E se ele estiver em uma multpagina e esta estiver dentro de uma frame.
Como resolveria para ela funcionar.
Re: Ajuda - Varios Checkbox em uma unica célula
Enviado: Seg Mai 07, 2018 9:20 pm
por srobles
nhyky,
Neste caso, deve-se apontar o lugar exato de onde os CheckBox estarão, ex :
Código: Selecionar todos
For Each ctlChk In Me.Multipage1.Pages(numeroPagina).FrameX.Controls
Agora, se você precisar "varrer" todo o Formulário, buscando por todos os CheckBox contidos nele, você deverá fazer um Loop para cada página do MultiPage, ex :
Código: Selecionar todos
Dim idPagina As Long
For idPagina = 0 To Me.MultiPage1.Pages.Count 'Começamos o laço da primeira até a última pagina
Me.MultiPage1.Value = idPagina 'Aqui ativamos a página de acordo com a variável
'Aqui, chamamos a rotina de validação dos controles, usando o exemplo acima
For Each ctlChk In Me.Multipage1.Pages(idPagina).FrameX.Controls
'Rotina para validação
Next
Next
Repare que em ambos os exemplos, apontamos para o Frame onde os CheckBox estão. No caso X seria o numero dele. Se seus Frames possuem outro nome, se atente á isso.
Espero ter ajudado.
Abs.