Pannello di Controllo Moderatore ]

[Risolto] Macro per costituire array

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] Macro per costituire array

Messaggioda geovign » lunedì 29 aprile 2019, 11:52

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 5 volte
Ultima modifica di geovign il lunedì 29 aprile 2019, 17:52, modificato 1 volta in totale.
LibO 6 su MX Linux
geovign
 
Messaggi: 62
Iscritto il: domenica 13 gennaio 2019, 12:19

Re: Macro per costituire array

Messaggioda geovign » lunedì 29 aprile 2019, 17:50

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 6 su MX Linux
geovign
 
Messaggi: 62
Iscritto il: domenica 13 gennaio 2019, 12:19

Re: [Risolto] Macro per costituire array

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 18:18

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   Espandi visualeStringi visuale
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
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2686
Iscritto il: mercoledì 21 novembre 2012, 21:07

Re: [Risolto] Macro per costituire array

Messaggioda geovign » lunedì 29 aprile 2019, 19:30

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 5 volte
Definizione_Array(1).ods
(14.42 KiB) Scaricato 4 volte
LibO 6 su MX Linux
geovign
 
Messaggi: 62
Iscritto il: domenica 13 gennaio 2019, 12:19


Torna a Calc

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite