Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Aprire e chiudere userforma da cella definita

Ultimo Aggiornamento: 04/06/2017 18:03
Post: 177
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
04/06/2017 11:44

Ciao a tutti,
vorrei cliccando su D13 aprire una userform (colorando il testo) e ricliccando chiuderla (decolorando il testo).
Ho fatto il 50% [SM=g27813]
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim indirizzo As String 
indirizzo = Target.Address 
Select Case indirizzo     
   Case "$D$13"     
   Range("D13").Select     
     With Selection.Font         
     .ThemeColor = xlThemeColorLight2         
     .TintAndShade = 0.399975585192419     
     End With         
  UserForm1.Show      

  End Select 
End Sub


Grazie in anticipo.
[Modificato da BG66 04/06/2017 11:45]
BG66
Excel 2010
Post: 394
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
04/06/2017 15:52

Ciao Gene
non ho capito bene cosa vuoi fare ma prova così
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("$D$13")) Is Nothing Then
     With Target.Font
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
     End With
    UserForm1.Show
End if
End Sub


Fai sapere. Ciao,
Mario
[Modificato da Marius44 04/06/2017 15:54]
Post: 3.892
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
04/06/2017 16:30

in un modulo standard
Public colore As Long, tema As Single

nel modulo del foglio Start
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim indirizzo As String
indirizzo = Target.Address
Select Case indirizzo
    Case "$D$13"
    With Target.Font
        colore = .ThemeColor
        tema = .TintAndShade
        .ThemeColor = xlThemeColorLight2
        .TintAndShade = 0.399975585192419
    End With
    UserForm1.Show
End Select

nella userform
Private Sub UserForm_Terminate()
    With Sheets("Start")
      With Selection.Font
        .ThemeColor = colore
        .TintAndShade = tema
      End With
    End With
End Sub
[Modificato da patel45 04/06/2017 16:35]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 1.373
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/06/2017 16:39

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
Post: 177
Registrato il: 13/12/2015
Città: MILANO
Età: 58
Utente Junior
2010
OFFLINE
04/06/2017 17:56

Garantito che sbaglio qualcosa!!
In tutti e tre i casi NON chiudo la userform ricliccando su D13.

Allego le 3 prove. Caricati in ordine alfabetico (Domenico, Mario, Patel).

PS Se è troppo incasinato, ho un piano B: mettere un chiudi nella userform. Ma se vi và vorrei comunque imparare se e come è fattibile.

Edit: Domenico con il mio PS ho anticipato di un secondo il tuo edit! Mentre con il secondo script si looppa su se stesso ossia mi dice di cliccare due volte su D13 per chiudere ma nel contempo non accetta il doppio click.



[Modificato da BG66 04/06/2017 18:06]
BG66
Excel 2010
Post: 1.374
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/06/2017 18:03

se tu mischi capra e cavoli.....

saluti e rileggi il mio post

[Modificato da dodo47 04/06/2017 18:05]
Domenico
Win 10 - Excel 2016
Vota: 15MediaObject5,0016 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 03:04. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com