| Otimizar macro pra diminuir " IF " | |
|
|
Autor | Mensagem |
---|
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Otimizar macro pra diminuir " IF " Sex Set 12, 2014 3:36 pm | |
| Bom dia pessoal do forum Estou com um problema em uma macro, onde ela está muito extensa e pouco "inteligente" Tenho uma planilha que faz o "check in" dos produtos que chegam na empresa, e outra de controle de estoque e quero que seja feito a adição da mercadoria do chek in para o estoque. Neste código estou pegando o produto e verificando seu nome, por exemplo, "arroz". Se ele for arroz, então a macro abre a planilha do estoque, pega a célula da frente do arroz (os produtos do estoque estão na coluna "A", suas quantidades estão na coluna " B") e soma a quantidade digitada na célula H8. - Código:
-
Sub Checklist_para_estoque() Dim produto, exp_mi As String Dim quantidade As Double Sheets("Check List Transporte").Select produto = Range("b8").Value exp_mi = Range("a9").Value quantidade = Range("h8").Value
If Range("C4").Value = "ORIGEM:" Then
If produto = "Produto 1" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B16").Value = quantidade + Range("B16").Value ActiveWorkbook.Save ActiveWindow.Close ElseIf produto = "Produto 2" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B17").Value = quantidade + Range("B17").Value ActiveWorkbook.Save ActiveWindow.Close ElseIf produto = "Produto 3" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B18").Value = quantidade + Range("B18").Value ActiveWorkbook.Save ActiveWindow.Close ElseIf produto = "Produto 4" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B19").Value = quantidade + Range("B19").Value ActiveWorkbook.Save ActiveWindow.Close
ElseIf produto = "Produto 5" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B20").Value = quantidade + Range("B20").Value ActiveWorkbook.Save ActiveWindow.Close
[....]
'Tenho q digitar produto por produto...
'
ElseIf produto = "Produto 124" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B137").Value = quantidade + Range("B21").Value ActiveWorkbook.Save ActiveWindow.Close
ElseIf produto = "Produto 125" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B138").Value = quantidade + Range("B22").Value ActiveWorkbook.Save ActiveWindow.Close
ElseIf produto = "Produto 126" Then Workbooks.Open ("C:\Users\Documents\controle_estoque.xls") Sheets("Saldo Total").Select Range("B139").Value = quantidade + Range("B139").Value ActiveWorkbook.Save ActiveWindow.Close
Else End If Else End If End Sub Queria saber como automatizar essa procura, sem precisar especificar a célula na frente do produto do estoque, pois são muitos produtos e se, por exemplo, eu tiver que adicionar algum produto no meio destes, eu teria também que mudar todas as referencias de baixo Seria um código que compara o nome do produto do check in com o nome do produto no estoque (Coluna "A"), se eles forem iguais, a célula referente ao produto no estoque é selecionada, em seguida a seleção passa para a célula da coluna seguinte (Coluna "B") e é acrescentado nela, a quantidade da célula H8 Se alguém souber por favor me ajuda.
Última edição por fdkdente em Sex Set 12, 2014 3:40 pm, editado 1 vez(es) (Motivo da edição : correção) | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Otimizar macro pra diminuir " IF " Sex Set 12, 2014 8:55 pm | |
| Boa tarde!!
Por favor poste os arquivo (s) modelos!!
Use um site gratuito com sedspace depois cole o link aqui.
Att | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Sex Set 12, 2014 10:52 pm | |
| Boa tarde,
Primeiramente obrigado pela atenção desde já.
Criei uma planilha exemplo com a mesma ideia de função da planilha que preciso.
O exemplo está neste link
ww*w. send space .com/file /0wadcp (junte os espaços e apague o asterisco)
Caso precise de mais informações basta pedir.
Atenciosamente,
Matheus. | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Otimizar macro pra diminuir " IF " Sáb Set 13, 2014 2:27 am | |
| Boa noite!!
Mercadoria Recebida e Controle de Estoque são guias ou arquivos?
Considerando seu arquivo modelo.... Você deseja ao executar a macro, que se na célula B3 se tem o dado (valor ou texto), Arroz na guia Mercadoria recebida procure na guia Controle de Estoque, o dado (valor ou texto), Arroz e atualize (insira) a quantidade ?
Att | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Dom Set 14, 2014 2:42 am | |
| Boa noite,
Os dois são arquivos, mas criei este exemplo com os dois no mesmo arquivo para facilitar.
O que quero é otimizar a macro, pois ela está se referindo a uma célula especifica, e isso é ruim... O que acho que seria ideal, é fazer ela comparar o Valor da célula C3 com os valores da coluna H, e selecionar a célula da coluna H que contem a igualdade dos valores. Com essa célula selecionada, a seleção iria uma coluna para a direita (coluna de quantidades) e então seria feita a soma do valor da C4 com o valor da célula selecionada.
Mais ou menos isso:
"Se C3 = (algum valor da coluna H) então
(Selecionar célula de mesmo valor)
(Passar a seleção para a célula à direita)
(Célula selecionada = Célula selecionada + C3)
Senão Finalizar Se"
Acho que não existe a função "algum valor da coluna H", então suspeito que deveria ser feito algum comando de repetição que verifica as células da coluna H e os compara com o valor da célula C3, e é desse comando que eu preciso para adaptá-lo às planilhas. Ou caso saiba uma maneira mais facil de fazer isso pode dizer também (:
Atenciosamente,
Matheus Dantas. | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Otimizar macro pra diminuir " IF " Dom Set 14, 2014 4:50 am | |
| Boa noite!!
Algo assim? https://www.sendspace.com/file/adt3tv Faça os testes!!!
Att | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Seg Set 15, 2014 12:57 pm | |
| Excelente!
Agora é só adaptar na planilha aqui.
Muito obrigado (: | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Seg Set 15, 2014 3:56 pm | |
| Testei agora com as planilhas reais, me resultou um problema na seguinte linha: If invdata Is Nothing Then Exit Sub
O problema é que ele não passa dessa linha, e sai do sub sem realizar os cálculos
Você pode me dizer o que o "Is Nothing" faz? Se ele interfere muito ou algum comando mais pra cima é prioridade...
Atenciosamente,
Matheus Dantas. | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Otimizar macro pra diminuir " IF " Seg Set 15, 2014 6:48 pm | |
| Boa tarde!!
Verifica se o objeto foi inicializado, definido, atribui etc.... Para mais leia: http://www.globaliconnect.com/excel/index.php?option=com_content&view=article&id=267:excel-vba-empty-zls-null-nothing-missing&catid=79&Itemid=475
Será necessário verificar varias coisas no seu real arquivo, células mescladas e outros de tales de intervalos etc...
Att | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Seg Set 15, 2014 7:12 pm | |
| Descobri onde estava meu "Erro"
O código está pegando a coluna A das duas planilhas, e na planilha real de Mercadorias Recebidas o produto não iria na coluna A, e sim em uma célula específica, apenas o Controle de Estoque usa a coluna A.
Vou adaptar as planilhas ao código, fazendo com que o cadastro de mercadorias recebidas seja nas colunas A e B também, até que eu saiba fazer com que o código pegue a célula necessária.
Muito obrigado mesmo pela ajuda, já automatizou bastante a procura tirando todos aqueles "IFs" (: | |
|
| |
fdkdente
Mensagens : 7 Data de inscrição : 12/09/2014
| Assunto: Re: Otimizar macro pra diminuir " IF " Ter Set 16, 2014 1:10 pm | |
| Bom dia!! Só acrescentando como uma ideia simples pode ajudar... Não sou craque em VBA, sei o básico do básico. Estava pensando sobre como iria colocar os dados da planilha de Mercadorias Recebidas na coluna A, mas não queria desmontar a estrutura de preenchimento. Então fiz a seguinte linha de comando antes de começar a fórmula toda: Range("A16").Value = Range("B8").Value Range("B16").Value = Range("H8").Value (B8 e H8 são as células que eu tentaria referenciar) E no final da formula toda coloquei: Range("A16").Value = "" Range("B16").Value = "" Dessa forma, fiz com que os dados ficasse temporariamente nas células que estavam de fato sendo lidas. Agora está completo Obrigado novamente, e espero que o tópico ajude mais pessoas! Abraços! | |
|
| |
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Otimizar macro pra diminuir " IF " Ter Set 16, 2014 2:52 pm | |
| Bom dia!! Eu fico feliz que você tenho resolvido sua dúvida! Obrigado pelo retorno! Att | |
|
| |
Conteúdo patrocinado
| Assunto: Re: Otimizar macro pra diminuir " IF " | |
| |
|
| |
| Otimizar macro pra diminuir " IF " | |
|