Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Ajuda - Varios Checkbox em uma unica célula
Ajuda - Varios Checkbox em uma unica célula
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.
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
Pichol,
Adicione o código abaixo, no botão do seu Form :
Aguardo retorno.
Abs
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))
Abs
-
- Colaborador
- Mensagens: 25
- Registrado em: Dom Set 25, 2016 3:26 am
Re: Ajuda - Varios Checkbox em uma unica célula
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.
Como eu poderia fazer isso?
Agradeço a ajuda.
Re: Ajuda - Varios Checkbox em uma unica célula
nhyky,
Veja se o exemplo abaixo atende sua necessidade. Apenas se atente em chamar esta rotina no evento click de cada checkbox.
Espero ter ajudado.
Abs
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
Abs
-
- Colaborador
- Mensagens: 25
- Registrado em: Dom Set 25, 2016 3:26 am
Re: Ajuda - Varios Checkbox em uma unica célula
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?
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
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
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
- Anexos
-
- modelo_Validação_CheckBox.zip
- (15.58 KiB) Baixado 642 vezes
-
- Colaborador
- Mensagens: 25
- Registrado em: Dom Set 25, 2016 3:26 am
Re: Ajuda - Varios Checkbox em uma unica célula
Muito obrigado.
Descobri o problema, se houver algum frame no formulário da aquele erro. Estranho !
Tente ai e veja.
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
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
Realmente não me atentei á questão do Frame. Todavia, basta modificar a linha :
Código: Selecionar todos
For Each ctlChk In Me.Controls
Código: Selecionar todos
For Each ctlChk In Me.Frame1.Controls
Espero ter ajudado.
Abs
-
- Colaborador
- Mensagens: 25
- Registrado em: Dom Set 25, 2016 3:26 am
Re: Ajuda - Varios Checkbox em uma unica célula
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.
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
nhyky,
Neste caso, deve-se apontar o lugar exato de onde os CheckBox estarão, ex :
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 :
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.
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
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
Espero ter ajudado.
Abs.