Você tem invoicenumber
declarado e também tenta obter seus dados, mas armazena o valor em invoiceno
.
Insira Option Explicit
no início do seu módulo, isso ajudará a evitar esses erros.
Estou usando o Excel 2013 para criar um código VBA que me permita transferir dados de uma pasta de trabalho (modelo de fatura do Excel) para outra pasta de trabalho (Registro de faturas).
Log:
Precisoquedeterminadascélulasdafaturasejamtransferidasparaumlog.Porexemplo:
L4(includestheinvoicenumber)L13(includesthedateoftheinvoice)L58(includesthetotalamountoftheinvoice)E13(BilledtoNameofSite)E25:E53(includespatientnames).
Nolog,gostariade:
L4=A2L13=B2L58=C2E13=D2E25:E53=E2
equeroqueacontagemdenomesnointervaloE25:E53apareçanacélulaF2dolog.F2comaquantidade.
EuqueroqueointervalodecélulasE25:53(apenasnomesdepacientes)sejacombinadoemumacélulaseparadaporumponto-e-vírgula,porexemplo,"John Doe; Mary Ann; Sam Cook".
Além disso, gostaria de começar uma nova linha toda vez que novos dados forem inseridos na fatura. A primeira linha do log terá os cabeçalhos. Veja o link abaixo para acessar capturas de tela para exemplos.
(Eu não consigo anexar a pasta de trabalho do Excel. Se você conhece uma maneira melhor de fazer isso, por favor me avise).
O código que tenho atualmente é:
Sub Button3_Click()
Dim InvoiceNumber As Integer
Dim InvoiceDate As Date
Dim TotalAmt As Currency
Dim BillTO As String
Dim InmateNames As String
Dim Qty As Integer
Worksheets("Invoice").Select
InvoiceNo = Range("L4")
InvoiceDate = Range("L13")
TotalAmt = Range("L58")
BillTO = Range("E13")
Description = Range("E25:E53")
Worksheets("Invoice Log").Select
Worksheets("Invoice Log").Range("A1").Select
If Worksheets("Invoice Log").Range("A1").Offset(1, 0) <> "" Then
Worksheets("Invoice Log").Range("A1").End(x1Down).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = InvoiceNumber
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = InvoiceDate
Por algum motivo, o código está começando com "0" como minha fatura #. As colunas Data da fatura, Total de itens, Faturados e QTD estão funcionando bem. No entanto, os nomes dos pacientes não são preenchidos.
Você tem invoicenumber
declarado e também tenta obter seus dados, mas armazena o valor em invoiceno
.
Insira Option Explicit
no início do seu módulo, isso ajudará a evitar esses erros.
Este exemplo pode ser revisado para o exemplo da fatura avançada que fez com excel userform: link
Neste modelo de fatura, as formas de usuário que contêm caixa de texto, caixa de listagem e botões são usadas para inserir rapidamente dados de clientes e produtos. Ago, os dados solicitados podem ser pesquisados na lista através das caixas de texto. Então, quando o item da lista é clicado duas vezes ou quando a tecla enter é pressionada, os dados do item são inseridos na planilha A fatura criada pode ser copiada para a folha de registro selecionada.
Tags microsoft-excel vba