Ir para conteúdo
Fórum Script Brasil
  • 0

Auto Numeração em duas colunas via macro


SilverMind

Pergunta

Olá Caros Amigos(as),

Estou desenvolvendo um sistema VBA Excel 2007, de Vendas, onde eu tenho 8 planilhas que servem de base de dados, alguns UserForms de cadastro e um UserForm de Vendas.

A questão é a seguinte: Estou tendo problemas em auto numerar via macro, duas colunas, a A e a B da seguinte forma...

Coluna A = ID (ID sequencial para identificação de cada produto vendido)

Coluna B = COD VENDA (Numeração dada a cada conjunto de vendas independente da quantidade de produtos vendidos, listados no ListBox lstCompras)

Segue imagem.

tela_planilha.png

O que eu preciso fazer, é auto numerar estas duas colunas com numerações diferentes, sendo uma sequencial e a outra não, começando com um código 100, por exemplo. Mas não é o que está acontecendo, como visto na imagem acima. Onde é ID, deve constar numeração 1, 2, 3... Em COD VENDA, 100, 100, 100... e numa próxima venda, 101, 101, 101... Entenderam!?!?!?!

O código que estou usando na macro responsável, é este:

Sub CodVenda()

    If IsNumeric(ActiveCell.Offset(-1, 1)) Then
        ActiveCell = ActiveCell.Offset(-1, 1) + 1
    Else
        ActiveCell = 100
    End If
    
End Sub

Public Sub NumAuto()
    
    If IsNumeric(ActiveCell.Offset(-1, 0)) Then
        ActiveCell = ActiveCell.Offset(-1, 0) + 1
    Else
        ActiveCell = 1
    End If
    
End Sub

Sub KitPagto()
Dim cDesc As Currency
Dim ListaItems As Integer

    If txtDinheiro.Text = "" And txtDesconto.Text = "" And txtProduto.Text = "" And txtPreco.Text = "" Then

        MsgBox "Não é possível Gravar informações vazias. Por favor, preencha o form!", vbCritical
        txtCod.SetFocus
        
    Else
        
        Plan6.Range("A2").Select
        ListaItems = lstCompras.ListCount - 1
        For i = 0 To ListaItems
            NumAuto
            CodVenda
        
            If txtDesconto.Text = "" Then
                cDesc = "0,00"
            Else
                cDesc = txtDesconto.Text
            End If
            
            'ActiveCell.Offset(i, 0).Value = ActiveCell.Offset(-i, 0).Value + 1
            ActiveCell.Offset(i, 1).Value = lblCodVenda.Caption
            ActiveCell.Offset(i, 2).Value = Date & " - " & Time
            ActiveCell.Offset(i, 3).Value = lstCompras.List(i, 0) 'Código PROBLEMAS NESTE ITEM
            ActiveCell.Offset(i, 4).Value = lstCompras.List(i, 1) 'Produto
            ActiveCell.Offset(i, 5).Value = CCur(lstCompras.List(i, 3)) 'Valor
            ActiveCell.Offset(i, 6).Value = cboClientes.Text 'Cliente
            ActiveCell.Offset(i, 7).Value = lstCompras.List(i, 2) 'Quantidade
            ActiveCell.Offset(i, 8).Value = CCur(lstCompras.List(i, 4)) 'Sub-Total
            ActiveCell.Offset(i, 9).Value = CCur(lblTotal.Caption) 'Total
            ActiveCell.Offset(i, 10).Value = CCur(txtDinheiro.Text) 'Valor para pagamento
            ActiveCell.Offset(i, 11).Value = CCur(lblTroco.Caption) 'Troco calculado automaticamente
            ActiveCell.Offset(i, 12).Value = CCur(cDesc) 'Desconto dado ao cliente
            ActiveCell.Offset(i, 13).Value = cboVendedor.Text 'Nome do Vendedor
            
        Next i
        i = i + 1
        
        MsgBox "Venda realizada com Sucesso!", vbInformation, "VP BAZAR SHOW"
    
        Limpar
        
        ActiveWorkbook.Save
        
    End If
End Sub

Não consigo chegar a uma finalização.

Esta é a imagem do UserForm.

tela_vendas.png

Serei muito grato a quem, com uma ótica diferente, puder me dizer onde errei e dar uma luz para um caminho melhor.

[ ],s

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Não seria mais fácil criar um intervalo de células ao invés de usar um monte de offset? Usar Range("A2:N2") por exemplo?

E criar duas rotinas para "buscar" nas colunas A e B os valores dos últimos ID e COD VENDA antes de lançar os registros na planilha?

Esse código que você escreveu está muito complicado, tem que simplificar um pouco...

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...