Algo como isso deve ser feito:
Sub GoalSeek()
Const csOverallSt As String = "E1"
Const csChangeCol As String = "C"
Const ciGoal As Integer = 0
Dim rngCheck As Range
Set rngCheck = Range(csOverallSt)
Do While rngCheck.Offset(1, 0).Value <> ""
Set rngCheck = rngCheck.Offset(1)
Loop
rngCheck.GoalSeek goal:=ciGoal, changingcell:=Range(csChangeCol & rngCheck.Row)
End Sub
A constante csOverallSt define a primeira célula que você deseja verificar por um espaço em branco - assim você não precisa definir a célula extra que é a primeira célula em branco. A constante csChangeCol define qual coluna contém o valor que você deseja que o processo de busca da meta mude. A constante ciGoal define o valor que a Meta de meta deve procurar. A variável rngCheck define um intervalo de células ou, como estamos usando aqui, uma única célula.
O procedimento começa atribuindo rngCheck para corresponder à célula que você definiu em csOverallSt . Em seguida, ele verifica se a célula abaixo de rngCheck está em branco; se não for, move rngCheck por uma linha e verifica novamente. Ele continuará fazendo isso até encontrar uma célula em branco.
Quando encontrar a célula em branco, ela realizará uma busca de meta, tentando definir o valor em rngCheck para o valor definido em ciGoal alterando o valor na coluna definida em csChangeCol e o mesmo linha como rngCheck .