Joilson, apesar de ter setado como resolvido e terem trancado o tópico, resolvi fazer umas observações.
Primeiro, não vi relacionamento da rotina que diz que resolveu com o requerido no assunto "Subtrair saldo na Label", acredito que não tenha conseguido implementar a dica do Reinaldo e está fazendo o calculo direto na planilha na Coluna "G" e carregando a Label.
Ok, se desta forma resolveu sua questão ótimo, se depois quiser implementar a dica do Reinaldo podemos ajudar, é só abri um novo tópico.
Agora quanto a sua solução de acrescentar a linha :
Sheets("Resumo").Select
Só para compreensão, sub entende-se que está executando o formulário de outra aba e buscando o resultado na aba Resumo, sendo assim, na linha que capta a última linha preenchida, temos :
UltimaLinha = Sheets("Resumo").Cells(Cells.Rows.Count, 1).End(xlUp).Row - veja que aqui referenciamos na rotina o nome da aba, mas quando chegamos na instrução :
If Range("A" & i).Value = Txtnforigem.Text And codigo.Text = Range("C" & i).Value Then, perceba que antes de Range não estamos informado que é referente a aba Resumo, igual foi feito na instrução anterior, desta forma a rotina entende que é referente a aba ativa e por isto não localiza nada.
Resumindo, se a intenção é chamar o formulário e executa-lo de qualquer aba ou de uma aba principal, é só referenciarmos a aba "Resumo" direto na rotina sem ter a necessidade de seleciona-la, então usariamos uma das duas formas, temos outras, mas vou colocar só as duas :
Referenciando o nome direto :
Private Sub CODIGO_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim UltimaLinha, i As Long
UltimaLinha = Sheets("Resumo").Cells(Cells.Rows.Count, 1).End(xlUp).Row
If UltimaLinha < 6000 Then UltimaLinha = 6000
For i = 1 To UltimaLinha
If Sheets("Resumo").Range("A" & i).Value = Txtnforigem.Text And CODIGO.Text = Sheets("Resumo").Range("C" & i).Value Then
Label12.Caption = Sheets("Resumo").Range("G" & i).Value
Exit For
End If
Next
End Sub
ou, criando uma Variável para a aba e definindo o Tipo e nome.
Private Sub CODIGO_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim UltimaLinha, i As Long
'Definimos a aba tipo e nome
Dim sResumo As Worksheet
Set sResumo = Sheets("Resumo")
UltimaLinha = sResumo.Cells(Cells.Rows.Count, 1).End(xlUp).Row
If UltimaLinha < 6000 Then UltimaLinha = 6000
For i = 1 To UltimaLinha
If sResumo.Range("A" & i).Value = Txtnforigem.Text And CODIGO.Text = sResumo.Range("C" & i).Value Then
Label12.Caption = sResumo.Range("G" & i).Value
Exit For
End If
Next
End Sub
Qualquer uma das rotinas acima pode ser executada sem a necessidade de selecionar a aba Resumo para obter o resultado pretendido.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 18/08/2015 11:09 am