Encontre a primeira célula em branco de uma coluna em uma tabela

1

Estou tentando encontrar a primeira célula em branco de uma coluna em uma tabela com este código:

'Find next blank cell in results sheet
lLastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

'Paste results in the result sheet
.Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value

O problema é que ele só encontra a primeira célula em branco após a tabela. Alguma idéia de como fazer isso funcionar dentro da mesa?

    
por Eddy 09.08.2017 / 15:26

3 respostas

1

Experimente:

Public Function IdentifyLastRowInBlock() As Long
  With Sheet1
    Dim lastRow As Long
    lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    Dim blankRow As Long
    blankRow = .Range(.Cells(3, 1), .Cells(lastRow, 1)).End(xlDown).Row + 1
  End With
  IdentifyLastRowInBlock = blankRow
End Function

Observe que isso retornará a última linha não utilizada a partir da linha 3. Não sabendo o seu código, simplesmente codifiquei o ponto de início - você terá que modificá-lo para se adequar às suas circunstâncias. Eu realmente recomendo torná-lo um parâmetro para a função, por isso é mais flexível no futuro. Também é codificado para procurar na coluna 1 ("A"), que também poderia ser um parâmetro.

Além disso, observe que se a tabela estiver "cheia" na coluna 1, ela encontrará a primeira linha após a tabela. O mais interessante sobre as tabelas é que elas se expandem automaticamente, portanto, se você colocar um valor na primeira linha após a tabela existente, o Excel expandirá a tabela para você.

    
por 09.08.2017 / 15:49
1

A função .End também tem opções diferentes de xlUp para que você possa começar no topo e trabalhar.

lLastRow = .Range("A1").End(xlDown).Row + 1

    
por 09.08.2017 / 15:46
0

Terminado com essa bruxa funciona

On Error Resume Next     lLastRow = Range ("A29: A67"). Find (What:="", _                     Depois: = Range ("A29"), _                     LookAt: = xlWhole, _                     LookIn: = xlFormulas, _                     SearchOrder: = xlByRows, _                     SearchDirection: = xlNext, _                     MatchCase: = Falso) .Row     On Error GoTo 0

            'Paste results in the result sheet
                .Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value
    
por 10.08.2017 / 11:45