Como converter código VBA do Excel para o Calc?

Melhorou, mas ainda há erro. Repare que se retroceder alguns meses dá erro no calendário e na célula onde fica a data digitada.

Realmente, esqueci que é data.

Vide Complemento 2 em minha Resposta acima…

Melhorou, mas sempre que digito a data dá erro de inserção na data.

Delete a validação e refaça,

Deve ser algum espírito maldoso na planilha .

Arquivo com validação refeita : 305644.ods

Grato.
Não percebi diferença entre essas duas últimas que enviou. Também não entendi “refazer a validação”.
Ainda persiste o erro na inserção de data.
Esse espírito maldoso persiste.

A diferença foram alterações nas Macros.

Altere a Validação para “Todos os valores” e deixe a Ajuda.

Descrição da imagem

Está melhorando (rs).
Mas se eu colocar na célula C2 a função =hoje() dá erro no calendário.

Coloque =hoje() em qualquer célula, recorte e cole em C2.

Ou C2 esta formatado Texto, formate data.

MAS, quando usar as setas o =hoje(), é alterado para data.

Grato. Acho que agora ficou perfeito.
Uma solução legal também é o uso do contador. Tentei adaptar a dica do amigo WBastos para recuar mês, avançar e recuar ano, mas não consegui.
Mas já estou satisfeito com o resultado.

Encontrei um pequeno problema. A data só mostra dois dígitos para o ano e configurando para os anos 2000.
Se eu digitar um ano qualquer dos anos 1900 fica correto, mas quando modifico o mês ou o ano a data muda para os anos 2000.

Formate B7, Data, formato DD/MM/AAAA

Perfeito.
Mais uma coisinha pra te deixar em paz.
Estou querendo mudar a fómula ali embaixo do calendário, onde aparecem os feriados do mês. Estou copiando da planilha que tenho no Excel, mas quando colo no Calc simplesmente não exibe o conteúdo das células. O que tenho que fazer pras fórmulas funcionarem? Estranho que isso ocorre quando copio as novas fórmulas, mas funciona com as fórmulas que já estavam lá.

Formulas alteradas ( as de fundo verde ) e automatizadas.

305644.ods

Muito bom.
A utilidade da fórmula na célula B7 é permitir digitar a data na C2?

Depois de tanto tempo reparei aqui um detalhe. No mês de janeiro não está exibindo o segundo feriado (dia 20) embaixo do calendário. Estou quebrando a cabeça pra entender por quê.Interessante que pra abril e novembro exibe todos os feriados.

Ola @pcmac, desculpe a demora, só recebi informação deste comentário hoje ( 15/05)

Nas formulas em E11 e F11 corrija

de: MENOR(L4:L17

para: MENOR($L$4:$L$17

faltou fixar a área.

E copie para baixo.

@pcmac , não sei se te serve, mas segue uma alternativa utilizando o campo de data que adaptei utilizando uma das macros disponibilizadas pelo @schiavinatto.

Com o contador habilitado é possível navegar pelos dias, meses e anos.

'===================
Sub DataIn (oEvento)
'===================
oDoc = ThisComponent
oPlan = oDoc.Sheets(0)
oCel = oPlan.getCellRangeByName ( "C2" )
oCampoData = oEvento.Source.Model
	  
	With oCampoData.Date
		sData = oCampoData.Text
    End With
	oCel.String = sData 
End Sub

Segue planilha com alterações no código e correção do campo de entrada manual de data.

Link do Arquivo: Planilha Teste

Interessante, mas foi feita usando uma anterior que apresentava erro. Se for clicando para alterar os meses dá erro.
Grato.

Acredito que se você colocar um contador numa célula auxiliar e depois usar o valor na fórmula, pode ser que dê certo, mas depois olho seu código com tempo

Se você inspecionar a variável DData (tecla F7 e debugar com F8), verá que na virada de ano a data passará para **01/13/2022**, ou seja, tem que definir a contagem do mês até 12 e depois voltar para o mês 01.

Testei aqui e deu certo para o avanço do mês, mas tem que adaptar para os demais campos:

Sub MesMais
	oDoc = ThisComponent
	oSel = oDoc.getCurrentSelection()	
	GoToLocal "DDia"
	oSel = oDoc.getCurrentSelection()
	Dia = oSel.getString()
	GoToLocal "MMes"
	oSel = oDoc.getCurrentSelection()
	Mes = oSel.getString()
	GoToLocal "AAno"
	oSel = oDoc.getCurrentSelection()
	Ano = oSel.getString()
	DData = Dia &"/"& Mes + 1 &"/"& Ano
		**If Mes > 11 Then 
			DData = Dia &"/"& 01 &"/"& Ano
		Else
			DData = Dia &"/"& Mes + 1 &"/"& Ano + 1
		End If**   
	oDoc.CurrentController.ActiveSheet.GetCellRangeByName( "C2" ).String = DData 
	GoToLocal "B2"
End Sub