Calc - Criação de Loop

Boa tarde!

Como criar uma rotina do tipo abaixo?

For x To y
If condição, Then Go To
Next
End

Grato

Braulio

Seria essa a ideia, se a condição for verdadeira, execute a OutraMacro e retorna para o For/Next

Segue exemplos com resumo das
INSTRUÇÕES CONDICIONAIS OU RAMIFICAÇÃO.odt (22.9 KB)

1 Like

Bom dia!

Agradeço a atenção.
A ideia é ter um loop dentro de outro. Utilizando números, para melhor visualização, a rotina ficaria similar a:

For x = 0 To 3
For y = 2 To 7
If condições Then
Next y
Next x
End
…ou simplesmente Next.

Pode ser um pouco mais complicado e levar algum tempo… mas vou tentar e darei um feedback posteriormente.

Grato

Você necessita especificar melhor o que deseja. (objetivo final)
.
Isso porque, se deseja saber como funcionam propriamente, é melhor buscar ajuda em algum destes locais:
Página de ajuda do LibreOffice
Site Mundo Libre do @schiavinatto .
Livro de Mauricio Baeza, o qual você também pode encontrar no site acima.
.
Ou fazendo buscas aqui no Ask e estudando as macros que são descritas na página ou em arquivos, para entender como funcionam.
.
Para você aninhar declarações de repetição é preciso definir os objetos/info que deseja obter. A utilização de loops depende de raciocínio em Lógica de Programação.
.
Exemplo de utilização:

Sub Controles_Limpar()

Dim sObj() As String

	sObj() = Array("EditControl", "ComboBoxControl", "DateFieldControl", "NumericFieldControl", "FormattedFieldControl")
		
	For i = 0 To UBound(oDialog.Controls())
		For j = LBound(sObj() ) To UBound(sObj() )
			If oDialog.Controls(i).ImplementationName = "stardiv.Toolkit.Uno" & sObj(j) Then
				oDialog.Controls(i).Text = ""
			ElseIf oDialog.Controls(i).ImplementationName = "stardiv.Toolkit.UnoRadioButtonControl" Then
				oDialog.Controls(i).Model.State = 0
			End If
		Next j
	Next i
	
End Sub 'BasicProject.Formularios.Controles_Limpar

Boa tarde, Felipe!

Grato pelas informações e atenção
Selecionar e Demonstrar Elementos que Atendam Uma Condição(3).ods (15.6 KB)
.
A planilha anexa é uma simplificação daquela que anexei anteriormente e tem três tabelas:

A tabela 1 é alimentada nas células B11:C12; E11:F12; H11:I12 e K11:L12 externamente (Não indicado no exemplo).

O conteúdo das células B11:B12… K12:L12 será somado e o total parcial em cada linha será indicado nas colunas D, G, J e M.

É necessário somar cada valor D, G, J e M entre si, desde que não pertençam à mesma coluna e contemplem todas as quatro colunas simultaneamente, para encontrar valores específicos dentro de um intervalo de valores e “criar” a Tabela 2.

A Tabela 2, que foi montada manualmente, demonstra todas as hipóteses possíveis de relações entre essas colunas, bem como, os conteúdos das células B11:C12; E11:F12; H11:I12 e K11:L12 correspondentes.

É necessário sempre ter todas as hipóteses possíveis para possibilitar mudar o intervalo de valores procurado.

Neste exemplo, procuramos valores no intervalo 62<=Σ(D+G+J+M)<=64 bem como, o que os gerou e que foram destacados, também manualmente, na Tabela 2.

Por fim, precisamos criar a Tabela 3 que é o demonstrativo dos conteúdos das células que atendem à nossa condição e ignoram os demais.

O objetivo é, portanto, automatizar a criação das Tabelas 2 e 3. Foi por isso que pensei na instrução For Next.

Ops… Na Tabela 2 as variaveis do grupo estão com erro.
No lugar de 15 e 16 estão 16 e 31.

Acertando, a 2a linha também é 64.

Na Tabela 1, haverá mudança de valores ?

Boa tarde, Schiavinatto!

Grato pelo retorno.
Os valores B11:C12; E11:F12; H11:I12 e K11:L12 são variáveis e serão atualizados frequentemente.
Todos valores apresentados na Tabela 1
Selecionar e Demonstrar Elementos que Atendam Uma Condição(3)Rev1.ods (15.7 KB)
são fictícios para servir de modelo exceto as somatórias que no caso apresentam os valores reais. (A tabela original contém uma infinidade de linhas.)

Você tem razão com relação ao erro na planilha. Já fiz a revisão e estou anexando.

Resumindo:
Os valores B11:C12; E11:F12; H11:I12 e K11:L12 são variáveis e serão atualizados frequentemente.
O valor da condição 64, é variável ou fixo ?

Tenho uma ideia de como fazer …, mas só vou poder desenvolver a noite. de dou o retorno.

O valor da condição é variável. Poderão ser buscados valores interessantes e diferentes num dado momento.

Ok, obrigado!

Deu tempo no almoço, segue arquivo…

Só preenche as Variáveis da Tabela 1 e a Condição…

Selecionar e Demonstrar Elementos que Atendam Uma Condição(3)Rev1_GS.ods (14.3 KB)

Schiavinatto,
Foi muito bem resolvida a parte final da questão, aliás uma parte significativa. O valor digitado em $O$6 aciona as fórmulas para encontrar esse valor na Tabela 2 já existente.

A parte ainda a resolver é sair da Tabela 1 e preencher automaticamente a Tabela 2 que vai disponibilizar valores diversos entre os quais estarão aqueles que serão selecionados e preencherão a Tabela 3.

Por que isso?
Porque a grosso modo, a Tabela 2 terá o número de linhas da Tabela 1 à quarta potência. No exemplo temos 16 linhas e é muito fácil preencher manualmente. Mas e se um dos grupos da Tabela 1 tivesse 10 linhas? Ou se todos os grupos tivessem 10 linhas? Demandaria uma eternidade preencher manualmente 10.000 linhas para criar a Tabela 2, que além de pouco prático, seria muito fácil cometer erros.

A informação dada é que “Os valores B11:C12; E11:F12; H11:I12 e K11:L12 são variáveis e serão atualizados frequentemente.”.


Fiz manual devido a pouca quantidade.


Então qual a máxima quantidade de variáveis por Grupo, que devemos considerar ?.


Só por curiosidade, qual o uso pratico de gerar a Tabela 3, dependendo da resposta, pode haver outro caminho a seguir !!!

Bom dia, Schiavinatto!

Me referi às variáveis num intervalo pequeno para simplificar a planilha como um todo, lamento não ter sido claro.

Respondendo à última pergunta, a planilha que está em desenvolvimento pretende ser uma ferramenta pessoal multiuso voltada para a engenharia civil e que me dê embasamento tanto para modificar um projeto, quanto para decidir uma compra ou avaliar um imóvel, entre outras coisas. A Tabela 3 vai me dar os números e condições que exprimem os limites do que farei.

A quantidade de variáveis pode chegar a algumas dezenas e pensando nisso, creio que a Tabela 2 ficará inviável. Talvez fosse possível processar os dados da Tabela 1 nos moldes da Tabela 2 e publicar somente a Tabela 3…