Notifications
Clear all

PLANILHA NÃO SALVA DADOS NA LINHA VAZIA CORRETA

4 Posts
3 Usuários
0 Reactions
865 Visualizações
(@alinejr)
Posts: 0
New Member
Topic starter
 

Oi gente,

estou com um problema bem irritante aqui no meu arquivo VBA.
A questão é a seguinte, criei um userform que salva diversas informações no mesmo instante em diversas planilhas, acontece que por exemplo quando quero salvar dados na planilha 2 e na planilha 7 ao mesmo tempo usando o userform, se a plainha ativa for a 2 ele percorre as linhas vazias e salva corretamente na primeira linha os dados que se destinam a planilha 2, mas quanto a planilha 7 que está inativa ele salva em qualquer lugar entre as linhas vazias (mesmo assim não é o que eu quero). Já quando estou com a plan7 ativa ele salva corretamente os dados nessa planilha, mas aí na plan2 ele coloca em qualquer linha até numa já preenchida, o que é bem pior. Alguém pode me ajudar? Onde estou errando? :( :(

O código que estou usando para condição específica que deve salvar dados nestas duas planilhas é:

If CB_TIPO = "SAÍDA" And CB_CUSTO = "Retirada do financeiro" Then
   
        linha = 5
        Set PLAN = Plan2
        Range("b1048576").Select 'seleciona a ultima linha da planilha
        Selection.End(xlUp).Select 'sobe na primeira linha preenchida da planilha
        ActiveCell.Offset(1, 0).Select 'desce para célula em branco
        linha = ActiveCell.Row 'captura na variável o valor da linha atual
              
        With PLAN
        .Cells(linha, 2) = CX_DATA.Value
        .Cells(linha, 3) = CB_NCLIENTE.Value
        .Cells(linha, 4) = CX_DESC.Value
        .Cells(linha, 6) = CX_NOTA.Value
        .Cells(linha, 7) = CB_CUSTO.Value
        .Cells(linha, 8) = CB_PAGAM.Value
        .Cells(linha, 9) = cb_Categoria.Value
        .Cells(linha, 11) = CCur(CX_SAI.Value)
        End With
      
      Set PLAN = Plan7 'EDITANDO
        Range("b1048576").Select 'seleciona a ultima linha da planilha
        Selection.End(xlUp).Select 'sobe na primeira linha preenchida da planilha
        ActiveCell.Offset(1, 0).Select 'desce para célula em branco
        linha = ActiveCell.Row 'captura na variável o valor da linha atual
        linha1 = linha + 1
        
        With PLAN
        .Cells(linha, 2) = CX_DATA.Value
        .Cells(linha, 6) = CB_PAGAM.Value
        .Cells(linha, 7) = cb_Categoria.Value
        .Cells(linha, 9) = CCur(CX_SAI.Value)
        End With
End If
 
Postado : 02/05/2018 2:41 pm
(@xlarruda)
Posts: 0
New Member
 

Veja se isso atende:

If CB_TIPO = "SAÍDA" And CB_CUSTO = "Retirada do financeiro" Then

Dim Ultimalinhaplan2, Ultimalinhaplan7 As Long
Ultimalinhaplan2 = plan2.Range("B" & Rows.Count).End(xlUp).Row + 1
Ultimalinhaplan7 = plan7.Range("B" & Rows.Count).End(xlUp).Row + 1

With PLAN
.Cells(Ultimalinhaplan2, 2) = CX_DATA.Value
.Cells(Ultimalinhaplan2, 3) = CB_NCLIENTE.Value
.Cells(Ultimalinhaplan2, 4) = CX_DESC.Value
.Cells(Ultimalinhaplan2, 6) = CX_NOTA.Value
.Cells(Ultimalinhaplan2, 7) = CB_CUSTO.Value
.Cells(Ultimalinhaplan2, 8) = CB_PAGAM.Value
.Cells(Ultimalinhaplan2, 9) = cb_Categoria.Value
.Cells(Ultimalinhaplan2, 11) = CCur(CX_SAI.Value)
End With

Set PLAN = plan7

With PLAN
.Cells(Ultimalinhaplan7, 2) = CX_DATA.Value
.Cells(Ultimalinhaplan7, 6) = CB_PAGAM.Value
.Cells(Ultimalinhaplan7, 7) = cb_Categoria.Value
.Cells(Ultimalinhaplan7, 9) = CCur(CX_SAI.Value)
End With
End If
 
Postado : 02/05/2018 2:58 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

alinejr,

Bom dia!

Pedimos, por gentileza, ao postar código VBA aqui no fórum, utilizar a ferramenta CODE que fica localizada logo acima da caixa de mensagens (quinto botão da esquerda para a direita).

 
Postado : 03/05/2018 8:18 am
(@alinejr)
Posts: 0
New Member
Topic starter
 

xlarruda

Oiii, poxa, muito obrigada. Era exatamente isso que eu precisava, não entendo como não havia pensado nisso!!!

Muito obrigada mesmoooooo! :D :D :D :D :D :D :D :D :D

 
Postado : 04/05/2018 5:10 am