Quero fazer uma planilha que possa ser usada como recibo impresso para os clientes, esse é o layout básico:
- Dados de contato do cliente (nome, endereço, etc) são campos fixos que podem estar vazios
- Linha de cabeçalho: "Item|Qtd.|preço|total"
- Tabela dinâmica contendo qualquer número de linhas, uma para cada artigo que o cliente compra
- Linha de rodapé contendo o número total de artigos e o valor total
O que estou enfrentando é como fazer a tabela dinâmica funcionar. Atualmente insiro manualmente uma linha para cada novo artigo, mas isso é complicado em situações em que está muito ocupado. Gostaria que o Excel mostrasse uma linha em branco por padrão e, em seguida, inserisse uma próxima linha cada vez que a linha anterior contivesse algum dado, movendo automaticamente a linha de rodapé uma linha para baixo e atualizando a fórmula usada para calcular a quantidade total. e quantidade.
Isso é possível em tudo?
Responder1
Apenas como um aviso para você e qualquer outra pessoa que tente fazer isso:
Neste momento você deve pensar em:
- com que frequência usarei isso por cliente?
- quantos clientes existem?
- como vou inserir esses itens?
- quantos itens diferentes existem?
Estas são as questões mais importantes. Eu fiz bastanteexatamente, o que você está tentando fazer, para uma empresa muito pequena, com cerca de 3 receitas por mês.
Como sempre, rápido, barato e excelente. No entanto, ninguém fez as perguntas acima. Principalmente por ser barato e excelente. E agora é tão óbvio quanto tempo se perde, sempre que um recibo é buscado, corrigido, mas principalmente quando os itens são somados. Sem mencionar quantas formas diferentes do mesmo item existem. No entanto, corrigir isso com o Excel é possível, mas IMHO, uma verdadeira dor. Convencido o cliente também, um EPR agora está configurado.
Esta é uma tarefa de banco de dados. É como um dos melhores exemplos de tarefa de banco de dados!
Além disso, isso pode até valer a pena um sistema ERP para pequenas empresas. Aqui na Alemanha, eu recomendo JTL-Wawi.
Mas, se isso for um salto muito grande, você realmente deveria pensar em usar o Access.
Algumas vantagens:
- você pode gerenciar seus clientes
- você pode gerenciar seus itens
- você pode mover seu comportamento dinâmico para acessar
- você pode gerenciar seus recibos facilmente
- você ainda pode usar o Excel como seu sistema de saída
Como isso funcionaria?
Você teria algumas tabelas, para clientes e itens, e para recibos. A tabela de recebimento conectaria um cliente aos seus itens e outros atributos relevantes do recebimento.
Em seguida, você poderia criar um relatório projetado para um recibo básico e imprimi-lo no acesso. Ou use o Excel para selecionar um recibo, obter os dados e imprimi-lo. Como os dados seriam predeterminados, você saberia quantas linhas/colunas estão chegando e qual é seu contexto.
No entanto - esta roda já foi inventada tantas vezes, então você deve dar uma olhada nas já existentes ;)
Editar
Uma solução baseada na sua solicitação de comportamento poderia usar esta tentativa aqui:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = clngColumnRightToLastGrade Then
Application.EnableEvents = False
'offset selection, one row down, two cols to left
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Target.Offset(1, -2).Select
Application.EnableEvents = True
End If
End Sub
É claro que você poderia usar o Change
evento e talvez fosse necessário limitar esse comportamento ao intervalo máximo da sua lista dinâmica ou à planilha dela.
Ou apenas torne uma macro acessível por tecla de atalho para executar esta linha aqui:
Target.EntireRow.Insert (xlShiftDown) 'insert new row
Você precisará determinar a célula atualmente selecionada para ter o Target
intervalo.