Condividi tramite

Aggiorma userform

Anonimo
2018-04-02T08:18:46+00:00

Buongiorno,

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?

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

2 risposte

Ordina per: Più utili
  1. Anonimo
    2018-04-02T12:01:35+00:00

    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

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2018-04-02T10:39:15+00:00

    Associa il codice che carica i dati da visualizzare all'evento Activate della UserForm

    Private Sub UserForm_Activate()

       '... codice che riporta i dati nella userform per la visualizzazione

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento