Function ou Sub com parâmetros opcionais ou Pré definidios

sub Retornar_Ultimas_Dozes_Vendas (ByVal Automatico As Boolean )

Gostaria que este Parâmetro Automatico fosse Opcional na chamada ou seja se nada for passado ele assume um determinado Valor

Chamo assim

Retornar_Ultimas_Dozes_Venda(True)

ou

Retornar_Ultimas_Dozes_Venda(False)

Mas preciso chamar assim

Retornar_Ultimas_Dozes_Venda() ou Retornar_Ultimas_Dozes_Venda(false) ou Retornar_Ultimas_Dozes_Venda(True)

em algumas linguagens isso é permitido . Como fazer isso no Calc da Libreoffice ??

Obrigado

Sou novo por aqui embora não na programação; trabalhei em Clipper Out/S87 e 5.#…3.b nos últimos 20 anos tenho trabalhado em Delphi(agora ando a ver Lazarus).
De “Basic” não “pesco” nada, a não ser, obviamente, o que é transversal a todas as linguagens.

Aqui, não entedo e não encontrei até agora, um exemplo, com uma chamada a uma validação de “Input”, de um formulário do Libre, embora entenda que essa só deva ser efetuada ao salvar o DOC; por exemplo For i:=1 to Fields.Count()-1 do
beguin
ValidaCampos( Campo[i].Value ) ;
Se erro then
Tratar o Erro; // Guarda Erros/Mensagens no Array[i]
end;
For i:=1 to ArrayLen do
begin
Se erros no Array mostra-os todos.
end;

If Erros=0 then
Salva direto “QqNome”+Sring(contador+1 ) !? Isto mesmo sem que o swriter*.odt
não esteja ligado a uma DBase. O contador poderia ser implementado a partir de um FilePATH:=
“c:\trabalho\ANO22\ FichasTrab#301.odt”, por exemplo, listando “a pasta” do FilePATH por ordem Decrescente, lendo a substring(FilePatth, pos(’#’,FilePath)+1, pos(’.’,FilePath)-1) fazendo convertendo para inteiro e somando+1.
Ou então, mais simples, pedindo o nome parece que o mais comum.

Alguém saberia indicar-me um exemplo do género.

Na mesma também ainda não percebi como

Olá, @dosreis57, por gentileza, em Tópicos Resolvidos, abra um novo Tópico e mencione tópico semelhante.

Não tem como marcar duas respostas com SOLUÇÃO.

Ainda não percebi como isso se faz mas vou ver. Obrigado

A quarta, 10/08/2022, 14:48, Gilberto Schiavinatto via Ask LibreOffice <noreply@ask.libreoffice.org> escreveu:

Clique em novo topico

Boa tarde,

Na linguagem Basic do LibreOffice existe a Instrução Optional que torna o parâmetro opcional. Então você deve testar no código o parâmetro com a função IsMissing( NomeParametro ). Por exemplo:

Sub MsgTipo( Optional nTipo )
   
   If IsMissing( nTipo ) Then
     msgbox "Tipo omitido"
   Else
     msgbox "Tipo informado: " & nTipo
   End If
   
End Sub

Atte,

1 Like

Obrigado , acho que ajuda muito … Mas caso não seja informado ele assume um valor pre definido ?
No caso de Inteiros por exemplo geralmente é o zero

Existe algo na Linguagem Basic do Libre Office que possa pre definir este parâmetro e o mesmo assuma um
valor caso não seja definido ?

Muito obrigado

Tente assim, no vba funciona, não sei no LO basic. Defina o valor a variavel opcional logo que vc declara o argumento do procedimento/função:

Sub MsgTipo( Optional nTipo As String = "Seu valor padrão" )

     msgbox "Tipo informado: " & nTipo


End Sub

fonte:

Obrigado @mrKalvin … Então pensei que pudesse ser desta forma tb precedito do Optional porém o compilador não aceita

Obrigado … Muito obrigado

Aguardo sugestões

Acredito que o arranjo mais aproximado com o que você quer é, por exemplo:

Sub Retornar_Ultimas_Dozes_Venda(Optional nParam )

If IsMissing( nParam ) Then
  nParam = 0
End If

...

Você identifica que o parâmetro não foi passado com IsMissing() e então define o valor padrão dentro da cláusula If. Parece que não existe esse “atalho” do VBA.

Interessante . Obg

Obg mesmo