Notifications
Clear all

Concatenar checkbox vba

8 Posts
3 Usuários
0 Reactions
1,505 Visualizações
(@michelle93)
Posts: 24
Eminent Member
Topic starter
 

Olá,

Estou tentando concatenar as informações que forem selecionadas em um frame, utilizei o código abaixo mas não está dando certo.

Private Sub CommandButton1_Click()
Dim ferramentas As String

If btns1 = True Then
ferramentas = "Ferramentas manuais"

Else
ferramentas = ferramentas
End If

If btns2 = True Then
ferramentas = "Ferramentas de impacto"

Else
ferramentas = ferramentas
End If

If btns3 = True Then
ferramentas = "máquina de solda"

Else
ferramentas = ferramentas
End If

If btns4 = True Then
ferramentas = "Carrinho de oxi-corte"

Else
ferramentas = ferramentas

End If

If btns5 = True Then
ferramentas = "Esmerilhadeira"

Else
ferramentas = ferramentas
End If

If btns6 = True Then
ferramentas = "Estropo"

Else
ferramentas = ferramentas
End If

If btns7 = True Then
ferramentas = "Furadeiras e brocas"

Else
ferramentas = ferramentas
End If

If btns8 = True Then
ferramentas = "Baú de ferramentas"

Else
ferramentas = ferramentas
End If

Dim chk As Control
Dim ferramentas1 As String, delimiter As String

For Each chk In Me.Frame4.Controls
If TypeOf chk Is MSForms.CheckBox Then
If (chk.Value) Then
ferramentas1 = ferramentas1 & delimiter & chk.Caption
delimiter = ","
End If
End If
Next

With colorsSheet
Cells(ActiveCell.Row, 16).Value = ferramentas1
End With

End Sub

 
Postado : 01/04/2018 4:21 pm
(@klarc28)
Posts: 971
Prominent Member
 

Quando enviar código, aperte o botão Code.
Na próxima vez, anexe o arquivo e especifique o que está errado.

Cinco dicas que foram muito úteis para mim:

1) Quando não sei fazer algo no VBA, vou ao menu EXIBIÇÃO >> MACROS >> GRAVAR MACRO
Faço o que eu quero aí volto ao menu EXIBIÇÃO >> MACROS >> PARAR GRAVAÇÃO
Aperto Alt + F11 e vejo como a macro fez aquilo. Tento entender e tento adaptar.

2) Quando vou criar um código e o resultado não está saindo como o esperado, entro no código e vou apertando F8 para executar passo a passo, aí vou passando o mouse sobre as variáveis para verificar se o valores delas estão corretos, já consertei milhares de códigos dessa forma.

3) Antes de executar o código, vou ao menu Depurar >> Compilar. Isso ajuda corrigir erros mais simples, como o nome de uma variável digitado errado.

4) Declaro todas as variáveis. Isso também evita erros.

5) Sempre uso o Option Explicit lá no início. Ele me obriga a declarar as variáveis.

 
Postado : 01/04/2018 4:28 pm
(@michelle93)
Posts: 24
Eminent Member
Topic starter
 

Boa tarde,

Tentei o código enviado mas ainda não está salvando, inseri um botão "teste" com o código indicado.
A ideia é que todos os campos flegados sejam salvos na coluna 16 da planilha.

 
Postado : 02/04/2018 2:18 pm
(@klarc28)
Posts: 971
Prominent Member
 

...............

 
Postado : 03/04/2018 7:10 am
(@michelle93)
Posts: 24
Eminent Member
Topic starter
 

Bom dia, klarc28

Está salvando todos os itens, independente de flegado ou não.

 
Postado : 03/04/2018 8:56 am
(@klarc28)
Posts: 971
Prominent Member
 

Tirei todos os labels do frame4.
Na propriedade caption dos checkboxes, coloquei o que estava na propriedade caption dos labels.

Private Sub CommandButton1_Click()


Dim ferramentas As String
Dim colorsSheet As Worksheet
Set colorsSheet = Sheets("Dados")

'If btns1 = True Then
'      ferramentas = "Ferramentas manuais"
'
'   Else
'      ferramentas = ferramentas
'End If
'
'If btns2 = True Then
'       ferramentas = "Ferramentas de impacto"
'
'   Else
'      ferramentas = ferramentas
'End If
'
'If btns3 = True Then
'     ferramentas = "máquina de solda"
'
'   Else
'      ferramentas = ferramentas
'End If
'
'If btns4 = True Then
'     ferramentas = "Carrinho de oxi-corte"
'
'    Else
'      ferramentas = ferramentas
'
'End If
'
'If btns5 = True Then
'      ferramentas = "Esmerilhadeira"
'
'  Else
'    ferramentas = ferramentas
'End If
'
'If btns6 = True Then
'    ferramentas = "Estropo"
'
'  Else
'    ferramentas = ferramentas
'End If
'
'If btns7 = True Then
'    ferramentas = "Furadeiras e brocas"
'
'Else
'    ferramentas = ferramentas
'End If
'
'If btns8 = True Then
'   ferramentas = "Baú de ferramentas"
'
'Else
'    ferramentas = ferramentas
'End If



Dim chk As Object
Dim ferramentas1 As String
ferramentas1 = ""

Dim delimiter As String
delimiter = ","
For Each chk In Me.Frame4.Controls
On Error Resume Next
  '  If TypeOf chk Is MSForms.CheckBox Then
        If chk.Value = True Then
        If ferramentas1 = "" Then
        ferramentas1 = chk.Caption
        Else
        
            ferramentas1 = ferramentas1 & delimiter & chk.Caption
        End If
        
            
        End If
    'End If
Next

With colorsSheet
    Cells(ActiveCell.Row, 16).Value = ferramentas1
End With



End Sub
 
Postado : 03/04/2018 9:04 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, MICHELLE93

Também dá pra aproveitar a numeração dos controles para corresponder ao label ao lado do checkbox:

Private Sub CommandButton1_Click()
  Dim ferramentas As String, i As Byte
  For i = 1 To 8
    With Me.Frame4
      If .Controls("btns" & i) = True Then ferramentas = ferramentas & _
          IIf(ferramentas <> "", ", ", "") & .Controls("Label" & 15 + i).Caption
    End With
  Next i
  With colorsSheet
      Cells(ActiveCell.Row, 16).Value = ferramentas
  End With
End Sub

 
Postado : 03/04/2018 12:55 pm
(@klarc28)
Posts: 971
Prominent Member
 

Marque como resolvido na parte que resolveu sua dúvida.

 
Postado : 04/04/2018 5:44 am