Jump to content
Sign in to follow this  
Ricardo_Ruivo

[Resolvido] Dúvida - Actualização do valor de uma variável

Recommended Posts

Ricardo_Ruivo

Boa noite,

tenho a variável lastRow que me conta o nº de células preenchidas na coluna A.

Sempre que eu apagar uma linha que esteja preenchida, o valor desta variável não deveria actualizar? actualizando por conseguinte a variável i do ciclo For.

O meu problema é que à medida que apago linhas a variável lastRow não é actualizada.

Sub apaga_linhas()
Dim lastRow As Long

lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row

MsgBox ("Numero de Linhas Preenchidas é: " & lastRow)

For i = lastRow To 1 Step -1
Rows(i).Delete
Next

End Sub

Obrigado pela ajuda.

Share this post


Link to post
Share on other sites
jpaulino

tenho a variável lastRow que me conta o nº de células preenchidas na coluna A.

Claro que não! Então tu calculas o total de linhas preenchidas e depois queres que actualize automaticamente como?

Cria uma variável fora do ciclo e sempre que apagas uma linha incrementas a variável (total = total + 1)

Share this post


Link to post
Share on other sites
Ricardo_Ruivo

Tem toda a razão. Foi mesmo burrice minha.

Sempre que apaga uma linha actualiza a variável lastRow e sai fora da função.

If Asc(fase2) > Asc(fase1) Then
 Rows(i).Delete
 lastrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
 Exit Function
ElseIf Asc(fase1) > Asc(fase2) Then
 Rows(j).Delete
 lastrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
 Exit Function
End If

Share this post


Link to post
Share on other sites
jpaulino

Mas tu não precisas de actualizar sempre a variável lastRow, apenas para definir o ciclo. Não entendo bem o que pretendes, mas se está resolvido, melhor! :D

Share this post


Link to post
Share on other sites
Ricardo_Ruivo

Mas tu não precisas de actualizar sempre a variável lastRow, apenas para definir o ciclo. Não entendo bem o que pretendes, mas se está resolvido, melhor! ;)

Penso que no meu caso tenho mesmo que actualizar a variável lastRow sempre que elimino uma linha, dado que tenho dois ciclos For interligados um no outro. O que me estava acontecer que é devido ao minha condição, podem ser eliminadas mais do que uma linha no ciclo For interno. Quando o ciclo For interno chega ao fim e o programa volta ao ciclo For externo, a variável i pode estar no índice de uma linha que entretanto já foi eliminada e nesse caso o conteúdo da célula está vazio. Dando depois erro no meu programa.

For i = lastrow To 1 Step -1
 a = Len(origem(i, 2))
 b = Len(origem(i, 1))
 fase = Mid(origem(i, 2), 1, 1)
 Number = Mid(origem(i, 1), 1, b)
 MsgBox ("O number é: " & Number)
 MsgBox ("A Fase é: " & fase)

 If fase = "A" Then

For j = lastrow To 1 Step -1

  c = Len(origem(j, 1))
  Number2 = Mid(origem(j, 1), 1, c - 1)

  If Number = Number2 Then
	MsgBox ("O Part Number é igual")
	'Apaga o part number
	Rows(i).Delete
	lastrow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
	Exit For
  Else
	MsgBox ("O Part Number não é igual")
     End If
   Next
 End If
Next

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.