[Risolto] Macro per costituire array

Discussioni sull'applicazione per i fogli di calcolo
Rispondi
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

[Risolto] Macro per costituire array

Messaggio da geovign »

Un saluto al forum.
Cosa devo fare:
per ogni casella di controllo selezionata (corrispondente ad una tabella) devo eseguire un blocco di comandi.
Cosa non ho fatto:
la cosa più semplice: scrivere una macro per ogni casella di controllo ed associarla a "stato modificato"
Cosa ho fatto:
qualcosa di più complicato (giusto per imparare un po')
1) costituire un array composto dai nomi delle caselle di controllo selezionate.
2) tramite un ciclo for/next per ogni nome che compone l'insieme, eseguire blocchi di comandi utilizzando l'istruzione Select...Case
Cosa non funziona:
La finestra di messaggio che mi compare, con l'elenco dei nomi costituenti l'array, non contiene tutto il testo da me impostato nella macro. Solamente se seleziono almeno 14 caselle, mi compare anche l'ultima riga.
Cosa mi piacerebbe fare:
Riuscire a dichiarare inizialmente l'array vuota ( dim nomearray() ) e costituire l'insieme con le sole checkbox effettivamente selezionate, cosa che io non sono riuscito completamente a fare; in questo modo ritengo che la finestra di messaggio mostrerà tutto il testo correttamente.
Spero di essere stato abbastanza chiaro oltre che prolisso.
Allego file.
Saluti
Geo
Allegati
Definizione_Array.ods
(14.42 KiB) Scaricato 99 volte
Ultima modifica di geovign il lunedì 29 aprile 2019, 17:52, modificato 1 volta in totale.
LibO 7 su LinuxMint 21
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: Macro per costituire array

Messaggio da geovign »

Ho risolto impostando prima il conteggio delle caselle di controllo selezionate (flaggate) poi la definizione della dimensione dell'array.
La finestra di messaggio ora è corretta.
Non so se è il modo corretto di procedere o è un espediente, ma funziona.
Se qualcuno ha soluzioni migliori ....
Saluti
Geo
LibO 7 su LinuxMint 21
Gaetanopr
Volontario
Volontario
Messaggi: 3300
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: [Risolto] Macro per costituire array

Messaggio da Gaetanopr »

geovign ha scritto:Ho risolto impostando prima il conteggio delle caselle di controllo selezionate (flaggate) poi la definizione della dimensione dell'array.
Con quale macro? dovresti allegare pure la nuova macro.
Comunque se non si conoscono le dimensioni dell'array e vuoi popolarlo all'interno del ciclo iniziale dove verifichi le checkbox puoi usare l'istruzione Redim Preserve in questo modo

Codice: Seleziona tutto

Sub CancSelSchede
	dim oCheck as object
'	dim oNameCheck(1 to 15)	'Definisco la dimensione massima che può avere l'insieme in funzione delle CheckBox
							'con partenza da 1 e non da 0
	dim count as integer
	n=1  'imposto il numero di partenza dell'insieme oNameChek()
	For s = 4 to 18   'ciclo impostato per il numero di caselle di controllo  
		oCheck=dlg.getControl("CheckBox" & s)
		if 	oCheck.getModel.State = 1 then
			Redim Preserve oNameCheck(0 to n)
			oNameCheck(n) = oCheck.getModel.Label	'l'insieme oNameChek() parte da 1 e non segue la
			n=n+1
  		end if
	next s
	count = n-1		'dimensione reale dell'array
	msgbox ("Sono state scelte le seguenti schede" & CHR(10) & _
			Join(oNameCheck,chr$(10)) & CHR(10) & "Sei sicuro di volere cancellarne il contenuto?" _
			,32, "Cancella quaderno di campagna")
'	exit sub

end sub
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
geovign
Messaggi: 215
Iscritto il: domenica 13 gennaio 2019, 11:19
Località: Modena

Re: [Risolto] Macro per costituire array

Messaggio da geovign »

Ciao Gaetanopr,
allego il file con la macro da me modificata come da mio precedente post. Scusatemi se non l'ho allegato prima.
Avevo letto nel wiki di openoffice (inglese) dell'istruzione Redim e vi evito commenti sulla mia incapacità di lettura e messa in pratica degli esempi.
Grazie Gaetanopr è quello che cercavo.
Allego anche il file con la tua macro.
Saluti
Geo
Allegati
Definizione_Array(Gaetanopr).ods
(14.36 KiB) Scaricato 99 volte
Definizione_Array(1).ods
(14.42 KiB) Scaricato 103 volte
LibO 7 su LinuxMint 21
Rispondi