Buongiorno a tutti. Ho provato a cercare nel forum ma non ho trovato soluzione al mio problema.
Come nel file allegato di esempio avrei la necessita' che, nel momento in cui venga premuto il pulsante "A" associato alla macro "TestA",
i pulsanti "B" e "C" risultino inibiti e non sia possibile quindi lanciare le macro associate a loro finche' l' esecuzione
della macro associata al pulsante "A" non risulti terminata.
Vale lo stesso discorso se come primo pulsante si preme "B" oppure "C".
Per inibizione del pulsante intendo che la macro ad esso associata non venga eseguita, quindi se sia possibile configurare il pulsante in qualche modo particolare oppure il risultato lo si possa raggiungere modificando le macro stesse.
Premetto che il file allegato e' solo al fine di esempio, la soluzione al problema mi servirebbe per applicarla a un file molto piu' complesso.
Ringrazio anticipatamente chi volesse affrontare la questione.
[Risolto] Inibizione altri pulsanti mentre la macro e' in esecuzione
Regole del forum
Solo richieste di aiuto. Per saluti e presentazioni utilizzate il forum Discussioni Generali e Presentazioni.
Solo richieste di aiuto. Per saluti e presentazioni utilizzate il forum Discussioni Generali e Presentazioni.
[Risolto] Inibizione altri pulsanti mentre la macro e' in esecuzione
Ultima modifica di MERE2206 il domenica 19 maggio 2024, 19:51, modificato 1 volta in totale.
OpenOffice 4.1.6 su Windows 10
Re: Inibizione altri pulsanti mentre la macro e' in esecuzione
Ciao, Calc non è il campo in cui sono più ferrato, tuttavia ho voluto provare aiutandomi con ChatGPT e ho trovato che questa macro funziona:
Codice: Seleziona tutto
Sub TestA
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonB As Object
Dim oButtonC As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonB = oForm.getByName("B")
oButtonB.Enabled = False ' Disattiva pulsante B
oButtonC = oForm.getByName("C")
oButtonC.Enabled = False ' Disattiva pulsante C
oSheet.getCellRangeByName("C37").string = "A"
oSheet.getCellRangeByName("H37").string = "A"
oSheet.getCellRangeByName("M37").string = "A"
wait 5000
oButtonB.Enabled = True ' Riattiva pulsante B
oButtonC.Enabled = True ' Riattiva pulsante C
End Sub
Sub TestB
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonA As Object
Dim oButtonC As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonA = oForm.getByName("A")
oButtonA.Enabled = False ' Disattiva pulsante A
oButtonC = oForm.getByName("C")
oButtonC.Enabled = False ' Disattiva pulsante C
oSheet.getCellRangeByName("C37").string = "B"
oSheet.getCellRangeByName("H37").string = "B"
oSheet.getCellRangeByName("M37").string = "B"
wait 5000
oButtonA.Enabled = True ' Riattiva pulsante A
oButtonC.Enabled = True ' Riattiva pulsante C
End Sub
Sub TestC
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonA As Object
Dim oButtonB As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonA = oForm.getByName("A")
oButtonA.Enabled = False ' Disattiva pulsante A
oButtonB = oForm.getByName("B")
oButtonB.Enabled = False ' Disattiva pulsante B
oSheet.getCellRangeByName("C37").string = "C"
oSheet.getCellRangeByName("H37").string = "C"
oSheet.getCellRangeByName("M37").string = "C"
wait 5000
oButtonA.Enabled = True ' Riattiva pulsante A
oButtonB.Enabled = True ' Riattiva pulsante B
End Sub
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Inibizione altri pulsanti mentre la macro e' in esecuzione
Grazie mille, faccio subito qualche test e vi faccio sapere se tutto ok.
OpenOffice 4.1.6 su Windows 10
[Risolto] Inibizione altri pulsanti mentre la macro e' in esecuzione
Grazie charlie, funziona tutto a dovere. ho semplicemente inserito anche il blocco sul pulsante premuto che lancia la macro, ho notato che premendolo piu' volte andava non so per quale ragione a riabilitare gli altri pulsanti.
Con il codice di seguito funziona tutto perfettamente.
Grazie per il supporto, anche di Domenica !
Con il codice di seguito funziona tutto perfettamente.
Grazie per il supporto, anche di Domenica !
Codice: Seleziona tutto
Sub TestA
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonA As Object
Dim oButtonB As Object
Dim oButtonC As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonA = oForm.getByName("A")
oButtonA.Enabled = False ' Disattiva pulsante B
oButtonB = oForm.getByName("B")
oButtonB.Enabled = False ' Disattiva pulsante B
oButtonC = oForm.getByName("C")
oButtonC.Enabled = False ' Disattiva pulsante C
oSheet.getCellRangeByName("C37").string = "A"
oSheet.getCellRangeByName("H37").string = "A"
oSheet.getCellRangeByName("M37").string = "A"
wait 5000
oButtonA.Enabled = True ' Riattiva pulsante A
oButtonB.Enabled = True ' Riattiva pulsante B
oButtonC.Enabled = True ' Riattiva pulsante C
End Sub
Sub TestB
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonA As Object
Dim oButtonB As Object
Dim oButtonC As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonA = oForm.getByName("A")
oButtonA.Enabled = False ' Disattiva pulsante A
oButtonB = oForm.getByName("B")
oButtonB.Enabled = False ' Disattiva pulsante B
oButtonC = oForm.getByName("C")
oButtonC.Enabled = False ' Disattiva pulsante C
oSheet.getCellRangeByName("C37").string = "B"
oSheet.getCellRangeByName("H37").string = "B"
oSheet.getCellRangeByName("M37").string = "B"
wait 5000
oButtonA.Enabled = True ' Riattiva pulsante A
oButtonB.Enabled = True ' Riattiva pulsante B
oButtonC.Enabled = True ' Riattiva pulsante C
End Sub
Sub TestC
Dim oDoc As Object
Dim oSheet As Object
Dim oForm As Object
Dim oButtonA As Object
Dim oButtonB As Object
Dim oButtonC As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ' Se i pulsanti sono nel primo foglio
oForm = oSheet.DrawPage.Forms.getByIndex(0)
oButtonA = oForm.getByName("A")
oButtonA.Enabled = False ' Disattiva pulsante A
oButtonB = oForm.getByName("B")
oButtonB.Enabled = False ' Disattiva pulsante B
oButtonC = oForm.getByName("C")
oButtonC.Enabled = False ' Disattiva pulsante C
oSheet.getCellRangeByName("C37").string = "C"
oSheet.getCellRangeByName("H37").string = "C"
oSheet.getCellRangeByName("M37").string = "C"
wait 5000
oButtonA.Enabled = True ' Riattiva pulsante A
oButtonB.Enabled = True ' Riattiva pulsante B
oButtonC.Enabled = True ' Riattiva pulsante C
End Sub
OpenOffice 4.1.6 su Windows 10
Re: Inibizione altri pulsanti mentre la macro e' in esecuzione
I tag ✔ [Risolto] vanno messi sul primo messaggio.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org