- 14 Mai 2019 às 14:04
#43861
Pessoal, bom dia. Estou com um problema que não tenho conhecimento suficiente para entender e gostaria da ajuda de vocês para resolvê-lo.
Contexto: Tenho uma planilha que possui uma coluna com datas e escrevi uma macro para achar entre essas datas o dia de hoje. Na célula D1 há a fórmula =hoje() na célula D2, o título da tabela 'Data' e a partir da D3, as datas.
Minha intenção é que a macro procure o dia de hoje e, não encontrando, procure ontem, anteontem e assim sucessivamente, me retornando a data mais recente na planilha.
Para isso escrevi:
Sub Hoje()
Dim i As Date
i = Extrato.Cells(1, 4).Value
Search:
On Error GoTo MenosUm
Extrato.Cells.Find(What:=i, After:=Extrato.Cells(3, 4), LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext).Activate
Exit Sub
MenosUm:
i = i - 1
GoTo Search
End Sub
____
O que eu estou achando estranho é o seguinte, quando a data de hoje está presente, a macro funciona e encerra. Quando não há a data de hoje e há a data de ontem, a macro procura a data, não encontra, aplica o MenosUm, subtrai 1 da variável, encontra o dia de ontem e encerra. Tudo legal até aqui. Mas se não há nem hoje e nem ontem o que se segue é:
A macro pesquisa, não encontra, roda o MenosUm e ao pesquisar de novo dá o seguinte erro:
"Erro em tempo de execução '91':
A variável do objeto ou a variável do bloco 'With' não foi definida"
Alguém sabe o porquê de estar acontecendo isso se há variável definida?
Obrigado desde já.
Contexto: Tenho uma planilha que possui uma coluna com datas e escrevi uma macro para achar entre essas datas o dia de hoje. Na célula D1 há a fórmula =hoje() na célula D2, o título da tabela 'Data' e a partir da D3, as datas.
Minha intenção é que a macro procure o dia de hoje e, não encontrando, procure ontem, anteontem e assim sucessivamente, me retornando a data mais recente na planilha.
Para isso escrevi:
Sub Hoje()
Dim i As Date
i = Extrato.Cells(1, 4).Value
Search:
On Error GoTo MenosUm
Extrato.Cells.Find(What:=i, After:=Extrato.Cells(3, 4), LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, SearchDirection:=xlNext).Activate
Exit Sub
MenosUm:
i = i - 1
GoTo Search
End Sub
____
O que eu estou achando estranho é o seguinte, quando a data de hoje está presente, a macro funciona e encerra. Quando não há a data de hoje e há a data de ontem, a macro procura a data, não encontra, aplica o MenosUm, subtrai 1 da variável, encontra o dia de ontem e encerra. Tudo legal até aqui. Mas se não há nem hoje e nem ontem o que se segue é:
A macro pesquisa, não encontra, roda o MenosUm e ao pesquisar de novo dá o seguinte erro:
"Erro em tempo de execução '91':
A variável do objeto ou a variável do bloco 'With' não foi definida"
Alguém sabe o porquê de estar acontecendo isso se há variável definida?
Obrigado desde já.