Rolar até linha automaticamente

Olá!

Tenho uma planilha com muitas linhas (na verdade 1 linha para cada dia do ano… e vários anos). Toda vez que abro a planilha, preciso rolar até o dia de hoje. Existe alguma maneira de fazer com que a planilha abra com a linha do dia de hoje já rolada?

Fiz alguns paliativos, como uma coluna A com condição ‘se’, que compara a data com ‘hoje()’, e coloca uma seta para mostrar o dia de hoje. Fica mais fácil localizar, mas não é exatamente o que eu queria. Alguma ajuda?

Ola @Agerber,

As datas já estão digitadas, ou o dia de hoje é o último da lista ?

Poste um exemplo de como esta o arquivo, em especial esta coluna com data.

Edite sua pergunta e com o ícone clipe anexe o arquivo.

Creio ser possível com uma Macro ser acionada na abertura do arquivo ir para a linha da data atual.

Obrigado pela resposta @schiavinatto,

Sim, as datas já estão todas digitadas, da mais antiga para a mais nova. São lançados despesas e recebimentos futuros, por isso preciso de datas até o final do ano.

Meu arquivo original é bastante correlacionado entre muitas planilhas e informações, por isso copiei o intervalo da planilha em interesse, e colei somente a os valores (sem as fórmulas). Assim fica mais “limpo”. Apenas deixei a condição ‘se’ para apontamento da data de hoje. Dashboard 2021.ods

Sub Nova_linha
dim document as object
dim dispatcher as object

rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$Caixa.$B$10000"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUpToStartOfData", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())

End Sub

anexo sugestivo

Ola @Orlando, esta macro vai para o final do arquivo, @Agerber, necessita que para no dia atual.

Segue minha contribuição: [Revisada]
Vale lembrar que as células que contém as datas têm que estar formatadas como “dd/mm/yyyy”

Option Explicit 
Sub PercorreLista()
	Dim oDoc 		As Object 
	Dim oPlan 	As Object 
	Dim oCel 		As Object
	Dim oCursor 	As Object  
	Dim i 		As Integer
	Dim lastRow 	As Integer 
	Dim firstRow 	As Integer  
		
	oDoc = ThisComponent
	oPlan = oDoc.Sheets( 0 )
	oCursor = oPlan.createCursor()
	oCursor.gotoEndOfUsedArea(False)
	firstRow = 3
	lastRow = oCursor.getRangeAddress().EndRow

    For i = firstRow To lastRow 
        oCel = oPlan.getCellByPosition ( 1 , i )
        If oCel.getString = Date (Now) Then
            oDoc.CurrentController.select( oCel )
            MsgBox oCel.String  
        End If
    Next    
End Sub

Link do arquivo:Planilha

Ola @WBastos, gostei da sua Macro, copiada e arquivada, só retirei “gordura”:

Sub PercorreLista()
    For i% = 1 To 421
    oCel = ThisComponent.getSheets().getByIndex ( 0 ).getCellByPosition ( 1 , i )
        'Verifica se a data da célula é igual ao dia atual
        If oCel.getString = Date (Now) Then
            'Seleciona a célula que contém a data atual
            ThisComponent.CurrentController.select( oCel )
        End If
    Next
End Sub

Abraço…

Fiz algumas alterações no código, onde acrescentei a “firstRow” e “lastRow”, com base em um post que o @ohallot disponibilizou.

@Agerber, segue uma sugestão|attachment

Na planilha Caixa célula B1 coloquei a formula =HOJE() e nomeada DataAtual

E a macro esta ligada em Ferramentas / Personalizar… / Eventos / Ao abrir documento.

Na abertura do arquivo clique em [ Ativar macros ]

Todos os dados ( colunas ) são preenchidos de uma só vez, se SIM posso dar outra sugestão usando um Formulário.

===> Curiosidade, como foi ocultada a linha 1 ?


ATENÇÂO:: Para dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Não use Adicionar resposta para comentário. Grato.

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Olá,

Obrigado pelas respostas. Interessante @WBastos e @schiavinatto, ambas responderam bem. Só fiz um ajuste particular de localização da planilha por nome

" oCel = ThisComponent.getSheets().getByName ( "Caixa" )",

porque meu arquivo original tem várias planilhas.

@schiavinatto, também achei estranho a linha 1 ficar oculta assim. Parece um bug, e aconteceu quando eu congelei as primeiras linhas.