Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Avatar do usuário
Por LeoHenrique
Posts Avatar
#60987
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
Por osvaldomp
#60991
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
#60994
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
Você não está autorizado a ver ou baixar esse anexo.
Por osvaldomp
#60995
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?
LeoHenrique agradeceu por isso
#60996
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...
Por osvaldomp
#61007
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)
LeoHenrique agradeceu por isso
#61023
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
osvaldomp agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord