Tópicos relacionados a códigos VBA, gravação de macros, etc.
Avatar do usuário
Por ERaldo 08 Set 2017 às 16:07
Membro Novato
Mensagens: 4
Reputação: 0
#26236
Boa Tarde, Galera.

Sou novato no assunto e gostaria de pedir uma ajuda dos colegas.
Estou desenvolvendo um controle de estoque e quis automatizar uma parte do processo, onde o usuário seleciona a checkbox que contem na propriedade caption o numero da nota (parte concluida), então quero rodar uma macro que veja quais checkbox estão com propriedade value=true e percorra a coluna da planilha para encontrar e na mesma linha em outra coluna escreva um numero prévia mente informado. Segue abaixo o que consegui fazer mas não esta rodando.
Agradeço antecipadamente a oportunidade de compartilhar.


Sub Movimentar_Estoque()

Dim Fornecedor As String
Dim Estagio As String
Dim Volume As Double
Dim Preço As Double
Dim NF As Integer
Dim Chkbx As Control

Fornecedor = Worksheets("Estoque").Range("B5").Value
Estagio = Worksheets("Estoque").Range("B3").Value
Preço = Worksheets("Estoque").Range("B7").Value
Volume = Worksheets("Estoque").Range("B13").Value
NF = Worksheets("Estoque").Range("B15").Value

For Each Chkbx In NUMERO_NOTAS.Controls
Do
If Chkbx.Value = True Then

If Worksheets("Entradas").Range("A1").Offset(i, 0).Value = "" Or _
Worksheets("Entradas").Range("A1").Offset(i, 90).Value <> "" Or _
Worksheets("Entradas").Range("A1").Offset(i, 11).Value <> Fornecedor Or _
Worksheets("Entradas").Range("A1").Offset(i, 5).Value <> Chkbx.Caption Then
Exit Do

ElseIf Chkbx.Value = True And Worksheets("Entradas").Range("A1").Offset(i, 0).Value <> "" And _
Estagio = "Transito" And Worksheets("Entradas").Range("A1").Offset(i, 11).Value = Fornecedor And _
Worksheets("Entradas").Range("A1").Offset(i, 5).Value = Chkbx.Value Then
Worksheets("Entradas").Range("A1").Offset(i, 90).Value = NF
End If


End If
Loop
Next Chkbx

MsgBox "Concluido!"

End Sub
Por osvaldomp 08 Set 2017 às 20:12
Membro 3 Estrelas
Mensagens: 244
Reputação: 118
#26243
sugestão - disponibilize uma amostra do seu arquivo Excel, com o código instalado e descreva com exatidão na própria planilha o que você pretende que o código faça. Se possível coloque alguns dados como exemplo e coloque também o resultado esperado.
Avatar do usuário
Por ERaldo 13 Set 2017 às 17:44
Membro Novato
Mensagens: 4
Reputação: 0
#26424
Osvaldo obrigado pela dica, mas acredito que uma pessoa mais experiente consiga entender e apontar onde estou errando na construção do código sem a necessidade de disponibilizar meu arquivo.
Por babdallas 14 Set 2017 às 01:22
Membro 3 Estrelas
Mensagens: 232
Reputação: 108
#26442
Não acho que seja questão de ser experiente ou não. Em seu código você tem algumas condições que usam células específicas da planilha e fica difícil para nós sabermos se isso pode ou não ser o problema. Por isso, postar a planilha facilita sim, pois podemos ver os dados destas células para entender melhor.
Normalmente quando se faz um loop pelos controles de formulário e se quer percorrer apenas um tipo de controle, após o for each colocaria o seguinte IF:
Código: Selecionar todosIf Typename(Chkbx) = "Checkbox" then
              Código
end if
Por gfranco 14 Set 2017 às 01:26
Membro 5 Estrelas
Mensagens: 732
Reputação: 323
#26443
babdallas escreveu:Não acho que seja questão de ser experiente ou não. Em seu código você tem algumas condições que usam células específicas da planilha e fica difícil para nós sabermos se isso pode ou não ser o problema. Por isso, postar a planilha facilita sim, pois podemos ver os dados destas células para entender melhor.
Normalmente quando se faz um loop pelos controles de formulário e se quer percorrer apenas um tipo de controle, após o for each colocaria o seguinte IF:
Código: Selecionar todosIf Typename(Chkbx) = "Checkbox" then
              Código
end if


Concordo com o colega babdallas .
Muitas vezes deixei de responder dúvidas devido ausência de modelo.