Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao fabbristeve,
ho 2 userform una dove carico i dati nel foglio di lavoro e la seconda per visualizzare tali dati e passo da una userform all'atra con dei commandbutton
il problema è che quando ho caricato i dati e poi passo alla userform per visualizzarli questi non si aggiornano in tempo reale ma se chiudo la userform e la riapro sono visibili. esiste un modo per aggiornare la userform in tempo reale?
Per aggiornare i dati in, ad esempio, un controllo ListBox su una Userform mentre la Userform è caricata:
- avvia la Userform impostando il valore False (vbModeless)per la sua proprietà ShowModal
- Sfrutta l'evento Change del foglio di interesse per aggiornare la proprietà List del controllo ListBox in risposta ad una modifica dei dati di interesse.
Per aggiornare i dati visualizzati nel controllo ListBox, alla riattivazione della Userform di interesse, basta caricare il contollo nell'evento Activate della Userform.
Poniamo che vi siano due Userform, Userform1, e Userform2 e che la seconda Userfom comprende il controllo ListBox1 e un controllo Commandbutton1.
A titolo di esempio,, prova qulcosa del genere:
In un modulo standard, incolla ilo seguente codice
'=========>>
Option Explicit
Public RngDati As Range
Public arrIn As Variant
Public Const sIntervallo As String = "A1:A26"
'--------->>
Public Sub ShowUserform()
UserForm2.Show vbModeless
End Sub
'<<=========
Nel modulo di codice del foglio di interesse, incolla:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RngDati As Range, Rng2 As Range
Dim UF As UserForm2
Set RngDati = Me.Range(sIntervallo)
Set Rng2 = Intersect(Target, RngDati)
arrIn = RngDati.Value
If Not Rng2 Is Nothing Then
Set UF = UserForm2
If UF.Visible = True Then
UF.ListBox1.List = arrIn
End If
End If
End Sub
'<<=========
Nel modulo di codice della seconda Userform, incoolla:
Option Explicit
'--------->>
Private Sub UserForm_Activate()
Dim SH As Worksheet
Set SH = ThisWorkbook.Sheets(1)
Set RngDati = SH.Range(sIntervallo)
arrIn = RngDati.Value
Me.ListBox1.List = arrIn
End Sub
'--------->>
Private Sub CommandButton1_Click()
Me.Hide
UserForm1.Show vbModeless
End Sub
'<<=========
Nel modulo di codice della prima Userform, incolla:
'=========>>
Option Explicit
'--------->>
Private Sub UserForm_Terminate()
UserForm2.Show vbModeless
End Sub
'<<=========
===
Regards,
Norman