Gene
BG66, 04/06/2017 11.44:
Ciao a tutti,
vorrei cliccando su D13 aprire una userform (colorando il testo) e ricliccando chiuderla (decolorando il testo).
non puoi...o meglio bisogna vedere cosa fai all'interno della uForm, i motivi sono diversi:
1) aprendo una uForm in quel modo, non ti è permesso cliccare sul foglio. Andrebbe aperta in modalità vbmodeless (userform1.Show vbModeless)
2) anche se la apri in tale modalità, se le macro legate ai comandi della tua uForm non spostano il cursore da D13 a "dove ti pare", il semplice click sulla cella D13 già selezionata, non produrrebbe nessun effetto. In ultimo leggi la
nota.
Quindi lo puoi fare solo con il doppioClick.
Nel VB del foglio interessato:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("$D$13")) Is Nothing Then
If Not IsUserFormLoaded("UserForm1") Then
UserForm1.Show vbModeless
'qui i tuoi colori etc '<<<<<<<<<<<<<<<<<<<<
Else
Unload UserForm1
'qui ripristini i tuoi colori etc '<<<<<<<<<<<<<<<<<<<<
End If
End If
Cancel = True
End Sub
Function IsUserFormLoaded(ByVal UFName As String) As Boolean
Dim UForm As Object
IsUserFormLoaded = False
For Each UForm In VBA.UserForms
If UForm.Name = UFName Then
IsUserFormLoaded = True
Exit For
End If
Next
End Function
NOTA: devi inibire la chiusura della uForm con la X altrimenti restano i colori inseriti nella cella all'apertura e non inserire nessun pulsante di chiusura.
Nel vb della Userform:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Doppio click su D13 per chiudere"
End If
End Sub
saluti
Edit: ma perché ti devi complicare la vita? Non basta un pulsante di chiusura nella uForm che ripristina il tutto senza dover ricliccare sulla cella? E quindi il semplice evento change e l'inibizione della X ??
[Modificato da dodo47 04/06/2017 17:58]
Domenico
Win 10 - Excel 2016