Página 1 de 1

Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 12:21
por LeoHenrique
Boa tarde a todos !

Pessoal, ao rodar o código abaixo, dá o erro "run time error '9' subscript out of range
A primeira parte do código roda correto, a segunda dá esse erro.

Alguém sabe me informar o que está errado ? Estou usando formulário.


Private Sub CommandButton1_Click()
linha_vendas = Sheets("Vendas").Range("A1048576").End(xlUp).Row + 1
Sheets("Vendas").Cells(linha_vendas, 1).Value = caixa_data.Value
Sheets("Vendas").Cells(linha_vendas, 2).Value = caixa_nf.Value
Sheets("Vendas").Cells(linha_vendas, 3).Value = caixa_vendedor
Sheets("Vendas").Cells(linha_vendas, 4).Value = caixa_sabor
Sheets("Vendas").Cells(linha_vendas, 5).Value = caixa_id
Sheets("Vendas").Cells(linha_vendas, 6).Value = caixa_quantidade
Sheets("Vendas").Cells(linha_vendas, 7).Value = caixa_preco
Sheets("Vendas").Cells(linha_vendas, 8).Value = caixa_quantidade.Value * caixa_preco.Value

sabor = caixa_sabor.Value
linha_sabor = Sheets(sabor).Range("A1048576").End(xlUp).Row + 1
Sheets("sabor").Cells(linha_sabor, 1).Value = caixa_data.Value
Sheets("sabor").Cells(linha_sabor, 2).Value = caixa_nf.Value
Sheets("sabor").Cells(linha_sabor, 3).Value = caixa_vendedor
Sheets("sabor").Cells(linha_sabor, 4).Value = caixa_sabor
Sheets("sabor").Cells(linha_sabor, 5).Value = caixa_id
Sheets("sabor").Cells(linha_sabor, 6).Value = caixa_quantidade
Sheets("sabor").Cells(linha_sabor, 7).Value = caixa_preco
Sheets("sabor").Cells(linha_sabor, 8).Value = caixa_quantidade.Value * caixa_preco.Value


Desde já agradeço a atenção de quem puder dar uma ajuda.
Leandro Moreira

Re: Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 14:30
por osvaldomp
No comando abaixo faltam as aspas no nome da planilha. Coloquei as aspas em vermelho.

linha_sabor = Sheets("sabor").Range("A1048576").End(xlUp).Row + 1

Re: Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 19:17
por LeoHenrique
Muito obrigado pela atenção Osvaldo, mas não funcionou ainda !
Vou anexar a planilha, pois ainda estou montando...
Na aba vendas, ao clicar no botão "Registrar Venda" e preencher o formulário, dá o erro !

Obrigado

Re: Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 19:42
por osvaldomp
O novo erro ocorre porque o código faz referência a uma planilha de nome "sabor", porém não existe essa planilha no seu arquivo.

Curiosidade: o seu código destina-se a lançar todos os dados do Formulário em duas planilhas, então resultaria em duas planilhas exatamente iguais, é isso?

Re: Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 21:21
por LeoHenrique
Então, Osvaldo ! A minha intenção é montar em uma planilha apenas ! Estou vendo curso no youtube, e quero juntar "Estoque" e "Vendas" em uma só ! Para depois ainda acrescentar as despesas fixas, e variáveis...

Re: Erro - Run-time error '9' no (VBA)

Enviado: 08 Dez 2020 às 22:07
por LeoHenrique
Muito obrigado Osvaldo ! Sua dica ajudou muito. Era somente tirar as aspas da variável "sabor" nos códigos abaixo.

Re: Erro - Run-time error '9' no (VBA)

Enviado: 09 Dez 2020 às 11:45
por osvaldomp
Olá, @LeoHenrique .
Agora entendi melhor o seu objetivo.
Segue abaixo um código que apresenta resultado igual ao seu código.
Código: Selecionar todos
Private Sub CommandButton1_Click()
 Dim ws As Worksheet, sabor As String
  sabor = caixa_sabor
  For Each ws In Worksheets(Array("Vendas", sabor))
   ws.Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 8).Value = _
     Array(CDate(caixa_data), caixa_nf, caixa_vendedor, caixa_sabor, caixa_id, caixa_quantidade, caixa_preco, caixa_quantidade.Value * caixa_preco.Value)
  Next ws
End Sub
obs.
1. acrescentei a função CDate para captar a data no formato dd/mm/aaaa, pois sem ela o código interpreta como mm/dd/aaaa. Exemplo, se você inserir 9/12/20 (9/dez/20) no campo Data do Form, o VBA que "pensa" igual ao Trump, "entende" e lança na planilha como 12/9/20 (12/set/20) .

dica:
1. habitue-se a sempre declarar as variáveis; para tornar obrigatória a declaração, no editor de VBA | Ferramentas | Opções | marque Requerer declaração de variável, daí em diante aparecerá no topo de cada Módulo a expressão Option Explicit
2. no seu caso me parece que um bom caminho seria manter uma planilha para Estoque e outra para Vendas, assim via um único Form você conseguiria alimentar essas duas planilhas, inclusive atualizar Estoque tanto no caso de uma venda como no caso de uma compra para Estoque, e via recursos nativos do Excel/VBA (Filtros, Tabela Dinâmica, ...) você poderia manipular os dados da planilha Vendas, sem a necessidade de ter uma planilha para cada item (no seu exemplo não teria uma planilha para cada fruta)

Re: Erro - Run-time error '9' no (VBA)

Enviado: 10 Dez 2020 às 07:54
por LeoHenrique
Muito obrigado Osvaldo pela informação e pelas dicas !! Estou criando este projeto para uma empresa. Tenho pouco conhecimento em VBA e estou aprendendo usar os Form com aulas no youtube e já alterando, deixando da forma que o cliente precisa, um sistema de controle das vendas, estoque e financeiro.
Obrigando novamente.
leandro.manhani@gmail.com