Autor Tópico: Alguém manja de VBA aí?  (Lida 752 vezes)

Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Online: 21 de Outubro de 2015, 16:57:20
Pessoal,

Alguém aí manja dos paranauês do mundo obscuro do Excel?  :D

Preciso criar num UserForm, uma combbox com valores que dependem do que uma outra combbox me dá.
A primeira CombBox chama-se LANC (de Lançamentos) e teve os seguintes valores adicionados:

Código: [Selecionar]
LANC.AddItem "1 - SAÍDA DO ALMOXARIFADO"
 
LANC.AddItem "2 - APLICAÇÃO NO PRODUTO"
 
LANC.AddItem "3 - PERDA INERENTE AO PROCESSO"
 
LANC.AddItem "4 - PERDA POR DESPERDÍCIO"


Depois disso, fiz a seguinte atribuição:


Código: [Selecionar]
Dim str_Lanc As String
 
str_Lanc = Me.LANC.Value

Agora me compliquei toda… estou trabalhando com IF, THEN e ELSE, aninhados conforme abaixo.
A outra combbox se chama MOTIVO (motivos dos lançamentos).
Mas em meu USERFORM não aparecem as opções.
Imagino que seja algo bem bobo que eu esteja fazendo, e não consigo enxergar!  :aua:

Código: [Selecionar]
If str_Lanc = "3 - PERDA INERENTE AO PROCESSO" Then
 
'Perdas inerentes ao processo
 
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
 
MOTIVO.AddItem "2 - SQUEEZE OUT"
If str_Lanc = "4 - PERDA POR DESPERDÍCIO" Then
 
'Perdas por desperdício
 
MOTIVO.AddItem "1 - SOBRAS EM BALDE"
 
MOTIVO.AddItem "2 - CURA POR ATRASO"
 
MOTIVO.AddItem "3 - CURA TEMPERATURA"
 
MOTIVO.AddItem "4 - MOVIMENTAÇÃO"
If str_Lanc = "2 - APLICAÇÃO NO PRODUTO" Then
 
'Produção
 
MOTIVO.AddItem "PRODUÇÃO"
Else
MOTIVO.AddItem "PRODUÇÃO"
End If
 
End If
 
End If
Desde já, agradeço imensamente a ajuda!
« Última modificação: 21 de Outubro de 2015, 16:57:58 por Cristiane Gellert »
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #1 Online: 21 de Outubro de 2015, 17:01:41
Ilustrando o que preciso...

Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


amador47sc

  • Moderador(a) Global
  • Trade Count: (16)
  • Referência
  • *****
  • Mensagens: 6.171
  • Sexo: Masculino
  • Aperfeiçoando o olhar em busca da melhor imagem
Resposta #2 Online: 21 de Outubro de 2015, 17:39:24
Oi, teve uma época que eu manjava bem disso, mas faz uns 2 anos que estou parado. posso tentar se quiser.


Fabio Pedro

  • Trade Count: (10)
  • Colaborador(a)
  • ****
  • Mensagens: 2.941
  • Sexo: Masculino
  • Carioca na veia e fotógrafo no coração!
Resposta #3 Online: 21 de Outubro de 2015, 17:39:53
Se for necessário mesmo realizar os testes condicionais aninhados o teste lógico deve seguir assim:

If condição Then   
 ...instruções
ElseIf condição Then
...instruções
 . . .
Else
 ...instruções
End If

Tenta implementar no seu código assim:

If str_Lanc = "3 - PERDA INERENTE AO PROCESSO" Then
 
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"

ElseIf str_Lanc = "4 - PERDA POR DESPERDÍCIO"
 
MOTIVO.AddItem "2 - SQUEEZE OUT"
 
ElseIf str_Lanc = "4 - PERDA POR DESPERDÍCIO"

...

segue esse teste até que satisfaça a condição...ai voce fecha.
End If


Seria isso?
Fábio Pedro.


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #4 Online: 21 de Outubro de 2015, 17:44:22
Oi, teve uma época que eu manjava bem disso, mas faz uns 2 anos que estou parado. posso tentar se quiser.
Apenas se não incomodar!  :ok:
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #5 Online: 21 de Outubro de 2015, 17:45:13
Se for necessário mesmo realizar os testes condicionais aninhados o teste lógico deve seguir assim:

If condição Then   
 ...instruções
ElseIf condição Then
...instruções
 . . .
Else
 ...instruções
End If

Tenta implementar no seu código assim:

If str_Lanc = "3 - PERDA INERENTE AO PROCESSO" Then
 
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"

ElseIf str_Lanc = "4 - PERDA POR DESPERDÍCIO"
 
MOTIVO.AddItem "2 - SQUEEZE OUT"
 
ElseIf str_Lanc = "4 - PERDA POR DESPERDÍCIO"

...

segue esse teste até que satisfaça a condição...ai voce fecha.
End If


Seria isso?

Já tentei o ElseIf e deu caca.
Vou tentar mais uma vez.  :ok:

Tava aqui tentando o "Case is", mas não rolou também!  :(
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


amador47sc

  • Moderador(a) Global
  • Trade Count: (16)
  • Referência
  • *****
  • Mensagens: 6.171
  • Sexo: Masculino
  • Aperfeiçoando o olhar em busca da melhor imagem
Resposta #6 Online: 21 de Outubro de 2015, 17:46:12
voce já tentou ir hospedando os resultados em células da planilha pra ver seu progresso?


edit

fazer um If e um else.. e os 2 end if só pra ver se tua lógica está correta.
« Última modificação: 21 de Outubro de 2015, 17:48:09 por amador47sc »


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #7 Online: 21 de Outubro de 2015, 17:50:24
voce já tentou ir hospedando os resultados em células da planilha pra ver seu progresso?


edit

fazer um If e um else.. e os 2 end if só pra ver se tua lógica está correta.
Já sim.
Ele considera o "else" para todas as outras opções

Corrigi da forma abaixo, mas ainda assim, só o "else" é considerado. :aua:


Código: [Selecionar]
Dim str_Lanc As String
str_Lanc = LANC.Value

MOTIVO.Clear
'Para perdas por desperdício
If str_Lanc = "4 - PERDA POR DESPERDÍCIO" Then
MOTIVO.AddItem "1 - SOBRAS EM BALDE"
MOTIVO.AddItem "2 - CURA POR ATRASO"
MOTIVO.AddItem "3 - CURA TEMPERATURA"
MOTIVO.AddItem "4 - MOVIMENTAÇÃO"

'Para perdas inerentes ao processo
ElseIf str_Lanc = "3 - PERDA INERENTE AO PROCESSO" Then
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
MOTIVO.AddItem "2 - SQUEEZE OUT"

'Para as duas primeiras opções
Else
MOTIVO.AddItem "PRODUÇÃO"

End If
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Fabio Pedro

  • Trade Count: (10)
  • Colaborador(a)
  • ****
  • Mensagens: 2.941
  • Sexo: Masculino
  • Carioca na veia e fotógrafo no coração!
Resposta #8 Online: 21 de Outubro de 2015, 17:56:50
Pode tentar a função select case.

select case str_Lanc
   case "3 - PERDA INERENTE AO PROCESSO"
      MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
   case "4 - PERDA POR DESPERDÍCIO"
      MOTIVO.AddItem "2 - SQUEEZE OUT"
...
   End Select

Não entendi porque não deu certo fiz aqui rapidinho e rodou na boa... :ponder:
« Última modificação: 21 de Outubro de 2015, 17:57:16 por Fabio Pedro »
Fábio Pedro.


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #9 Online: 21 de Outubro de 2015, 17:58:46
Pode tentar a função select case.

select case str_Lanc
   case "3 - PERDA INERENTE AO PROCESSO"
      MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
   case "4 - PERDA POR DESPERDÍCIO"
      MOTIVO.AddItem "2 - SQUEEZE OUT"
...
   End Select

Não entendi porque não deu certo fiz aqui rapidinho e rodou na boa... :ponder:
Eu devo estar fazendo merda... hahaha  :aua: :D

Lá vou eu de novo :)
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #10 Online: 21 de Outubro de 2015, 18:04:39
 :aua: :aua: :aua: :aua: :aua: :aua: :aua: - nada ainda

Código: [Selecionar]
Select Case str_Lanc

'Para perdas por desperdício
Case Is = "4 - PERDA POR DESPERDÍCIO"
MOTIVO.AddItem "1 - SOBRAS EM BALDE"
MOTIVO.AddItem "2 - CURA POR ATRASO"
MOTIVO.AddItem "3 - CURA TEMPERATURA"
MOTIVO.AddItem "4 - MOVIMENTAÇÃO"

'Para perdas inerentes ao processo
Case Is = "3 - PERDA INERENTE AO PROCESSO"
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
MOTIVO.AddItem "2 - SQUEEZE OUT"

End Select
« Última modificação: 21 de Outubro de 2015, 18:04:52 por Cristiane Gellert »
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Fabio Pedro

  • Trade Count: (10)
  • Colaborador(a)
  • ****
  • Mensagens: 2.941
  • Sexo: Masculino
  • Carioca na veia e fotógrafo no coração!
Resposta #11 Online: 21 de Outubro de 2015, 18:08:02
:aua: :aua: :aua: :aua: :aua: :aua: :aua: - nada ainda

Código: [Selecionar]
Select Case str_Lanc

'Para perdas por desperdício
Case Is = "4 - PERDA POR DESPERDÍCIO"
MOTIVO.AddItem "1 - SOBRAS EM BALDE"
MOTIVO.AddItem "2 - CURA POR ATRASO"
MOTIVO.AddItem "3 - CURA TEMPERATURA"
MOTIVO.AddItem "4 - MOVIMENTAÇÃO"

'Para perdas inerentes ao processo
Case Is = "3 - PERDA INERENTE AO PROCESSO"
MOTIVO.AddItem "1 - MATERIAL IMPREGNADO"
MOTIVO.AddItem "2 - SQUEEZE OUT"

End Select

tira o is de Case is e testa...
Fábio Pedro.


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #12 Online: 21 de Outubro de 2015, 18:10:52
tira o is de Case is e testa...
Já tentei! Ele aparece sozinho de novo! :o
Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/


Fabio Pedro

  • Trade Count: (10)
  • Colaborador(a)
  • ****
  • Mensagens: 2.941
  • Sexo: Masculino
  • Carioca na veia e fotógrafo no coração!
Resposta #13 Online: 21 de Outubro de 2015, 18:13:29
Já tentei! Ele aparece sozinho de novo! :o

me dá um print do que acontece...
Fábio Pedro.


Cristiane Gellert

  • Moderador(a) Global
  • Trade Count: (1)
  • Membro Ativo
  • *****
  • Mensagens: 762
  • Sexo: Feminino
  • Amo fotografia! Simples assim! :)
    • Meu site!
Resposta #14 Online: 21 de Outubro de 2015, 18:16:53
me dá um print do que acontece...
Então, não tem como printar, pq é só eu digitar "Case" no editor, em seguida de um "=" que o "is" aparece automaticamente.

Será a versão do Excel que faz isso? Uso o Excel 2010.

Cristiane Gellert
"Fotografia, uma arte que nos envolve pela surpreendente forma de eternizar o que nosso olhar quer viver para sempre."

https://www.facebook.com/cristianegellert
Meu site: http://www.cristianegellert.com/