Notifications
Clear all

Limpar variavel declarada.

3 Posts
3 Usuários
0 Reactions
1,077 Visualizações
(@bellizzi)
Posts: 0
New Member
Topic starter
 

Pessoal, boa tarde.

Estou com um pequeno problema com variável. Fiz a seguinte declaração:

Dim m as Integer

m = Range("C2").value2

----------------------------------------------

Na celula c2 possuo um nº de matricula de funcionário que desejo copiar para celulas abaixo. Até encontrar uma célula que já esteja preenchida, e quando isso acontecer, a variável m adotará este novo valor e assim o código ira prosseguir até não encontrar mais células a serem preenchidas.

O problema é que para dar sequencia preciso limpar o valor da minha variável para que a mesma adquira novo valor. E testei o seguinte:

m = Empty
e
m = Erase

mas não funcionaram...

Segue meu código até o momento:

Sub intMatricula()

Dim m As Integer

Range("c2").Select 'selecionar a celula c2 e transforma em variável
m = ActiveCell.Value
ActiveCell.Offset(1, -2).Select 'seleciona a coluna A criada como chave guia do código

Do While ActiveCell.Select <> "" 'faz a primeira validação para rodar o código
ActiveCell.Offset(0, 2).Select 'volta a coluna B

If ActiveCell.Value2 = "" Then
ActiveCell.Value2 = m
ActiveCell.Offset(1, -2).Select
Else
MsgBox "pensar no restante..."
End If

Loop

End Sub

Desde já agradeço a ajuda de todos.

 
Postado : 26/12/2014 9:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Confesso que não entendi o zigue zague descrito acima.
Contudo algumas considerações: Ao utilizar/atribuir valor uma variável, e num ponto qualquer precisar alterar esse valor, basta atribuir novamente um valor a essa variável:
M= Range("C2")
.....
M=Range ("C18") --> á partir daqui o valor de m passa a ser o valor de C18

Uma variável tipo integer terá sempre um valor "atribuido", se não for explicito assumira m=0 (valor de m será Zero)

 
Postado : 26/12/2014 9:45 am
(@edcronos)
Posts: 1006
Noble Member
 

nem sei se entendi bem

mas não é necessário limpar a variável para ela assumir novo valor
tbm não é necessário usar Offset ou Select

agora vamos ver se entendi a logica da sua macro
vc verifica se na coluna "C" tem algum valor, começando na linha 2,
se tiver vai pegar esse valor colocar na variavel "M" e preencher a coluna "A" até ter algum valor em"C"

mas nesse ponto a macro vai ser infinita até a ultima linha
vc vai ter que definir qual a linha limite
mas seria igual a isso oq vc quer

lf = Cells(Rows.Count, "C").End(xlUp).Row' vai definir a ultima linha da coluna c com valor =linha final
li=2' define a primeira linha
m=cells(li,"C").value2

for l= li to lf ' vai fazer loop da 1ª até a ultima linha
if cells(l,"C").value2<>"" then m= cells(l,"C").value2 else cells(l,"A").value2 =m
next

 
Postado : 26/12/2014 11:04 am