Condividi tramite

Refresh dati Userform

Anonimo
2014-07-30T20:34:52+00:00

Salve a tutti eccomi quì con un nuovo quesito.

Ho una userform dove posso inserire e modificare dati presenti nel mio foglio 

tutto funzionante ,solo che vorrei che dopo la modifica dei dati nelle varie textbox o combo che siano

e la scrittura sul foglio tramite il pulsante modifica avvenisse un refresh dei dati presenti nella userfom.

Questo perchè sul foglio alcuni dati sono legati tra loro tramite formule ,ed in base alle scelte che faccio nella userform

in alcune textbox non modificabili visualizzo il risultato.

Quindi tramite un eventuale refresh dei dati potrei visualizzare in tempo reale i risultati senza dover passare da un record all'altro

per far si che la userfom rilegga i dati appena modificati.

Spero di essere stato chiaro....

Grazie !

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

Risposta accettata dall'autore della domanda

Anonimo
2014-07-31T23:27:47+00:00

non ho capito la frase di Norman David Jones

"Gentilezza inerente impedisce che cito anche l'ultima riga di tale risposta ;-)" 

Ciao Deniel,

Quello era un riferimento, inteso in modo nè malizioso nè cattivo ma, anzi, unicamente in modo scherzoso e amichevole, al mio uso precedente della frase latina:

Quod erat demonstrandum!

Saluti!

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-07-31T04:27:34+00:00

    Ciao Deniel,

    La risposta corta sarebbe di utilizzare il codice del pulsante per aggiornare non solo il foglio ma anche i controlli di interesse.

    A titolo di esempio illustrativo (anche se alquanto banale), apri una nuova cartella di lavoro. 

    Nell'intervallo A1:F10 della sua Foglio1, incolla la seguente tabella:

    Nome Ore Euro/Ora Reddito             Lordo Imposta Salario <br><br><br>   Netto
    Anne 39,0 9,75
    Ben 35,0 5,25
    Carol 38,0 11,25
    David 15,0 9,50
    Ewan 20,0 6,99
    Freda 38,0 12,50
    Gerald 41,5 6,95
    Harry 45,0 8,50
    Irma 28,0 11,25

    Nella prima riga delle tre colonne vuote, copia le seguente formule e trascinale in basso:

    =B2*C2 =D2*0,2 =D2-E2

    Ora, crea una UserForm con due TextBox, una ComboBox e un CommandButton (TextBox1, TextBox2, ComboBox1 e CommandButton1).

    Nel modulo di codice della UserForm incolla il seguente codice:

    '==========>>

    Option Explicit

    Dim WB As Workbook

    Dim SH As Worksheet

    Dim Rng As Range

    '---------->>

    Private Sub CommandButton1_Click()

        Dim destRng As Range

        Set destRng = Rng.Cells(Me.ComboBox1.ListIndex + 1, 2)

        With Me

            destRng.Value = CDbl(.TextBox1.Value)

            destRng.Offset(0, 1).Value = CDbl(.TextBox2.Value)

            .ComboBox1.List = Rng.Value

        End With

    End Sub

    '---------->>

    Private Sub UserForm_Initialize()

        Set WB = ThisWorkbook

        Set SH = WB.Sheets("Foglio1")

        Set Rng = SH.Range("A1:E10")

        With Me.ComboBox1

            .ColumnCount = Rng.Columns.Count

            .List = Rng.Value

            .ListIndex = 1

        End With

    End Sub

    '<<==========

    In un modulo standard, incolla:

    '==========>>

    Option Explicit

    '---------->>

    Public Sub MostraUserform()

        UserForm1.Show vbModal = False

    End Sub

    '<<==========

    Finalmente, sul Foglio1, inserisci un pulsante e allega questa macro al pulsante.

    Prova la Userform: seleziona qualsiasi riga della Combox e inserisci alcuni nuovi valori nelle due TextBox. 

    Vedrai che, quando si preme il CommandButton, i valori nelle colonne B:C saranno aggiornati con i valori inseriti nelle due TextBox e i dati della ComboBox rifletteranno i valori aggiornati in tutte le colonne della tabella. 

    Quod erat demonstrandum!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2014-07-31T13:52:33+00:00

    Ti ringrazio ma ciò che tu mi hai fornito non fa altro che modificare i dati in tabella e sulla userform ho solo i dati che io ho modificato e non una textbox con i risultati dati dalle mie scelte di ritorno dalla tabella subito dopo la modifica...

    Io vorrei fare un refresh dei dati per poter vedere subito i cambiamenti dovuti alle modifiche fatte.

    Esempio:

    Se nella textbox1 metto 10 e lo scrivo sul foglio nella cella "A1" usando il tasto modifica

    nella textbox2 devo vedere il valore  che è il risultato (cella "C1" sul foglio) della somma di "A1" + "B1".

    Attualmente l'aggiornamento lo ottengo solo spostandomi sul record precedente e poi tornando sul record appena modificato.

    comunque grazie...

    Ciao Deniel,

    La tua esperienza non corrisponde con la mia!

    Sempre utilizzando la mia tabella, questo è un esempio che potresti facilmente replicare:

    Nella ComboBox scelgo la riga Ben

    Nelle due textbox  inserisco i valori 40 e 10

    Premo il pulsante

    Come risultato, tutte le celle nella seconda riga della tabella sono aggiornate e, aprendo la ComboBox. vedo che ciascuna colonna della riga Ben nella ComboBox è stata aggiornata!

    Se, come conseguenza della larghezza del ComboBox, non è possibile vedere tutte le sei colonne, prova a sostituire la procedura Userform_Initialize con la seguente versione:

    '------------>>

    Private Sub UserForm_Initialize()

        Set WB = ThisWorkbook

        Set SH = WB.Sheets("Foglio1")

        Set Rng = SH.Range("A1:f50")

        With Me.ComboBox1

            .ColumnCount = Rng.Columns.Count

            .List = Rng.Value

            .ListIndex = 1

            .ColumnWidths = "30;30;30;30;30;30"

        End With

    End Sub

    '<<------------

    Come ho spiegato, questo è un semplice esempio illustrativo per dimostrare l'aggiornamento dei dati nella form e penso che lo faccia! 

    Ovviamente, i dati di uno o tutti i controlli della Userform possono essere aggiornati in modo simile. Vorrei ripetere la prima riga della mia risposta originale:

    La risposta corta sarebbe di utilizzare il codice del pulsante per aggiornare non solo il foglio ma anche i controlli di interesse.

    Gentilezza inerente impedisce che cito anche l'ultima riga di tale risposta ;-)

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-07-31T12:44:30+00:00

    ...

    Esempio:

    Se nella textbox1 metto 10 e lo scrivo sul foglio nella cella "A1" usando il tasto modifica

    nella textbox2 devo vedere il valore  che è il risultato (cella "C1" sul foglio) della somma di "A1" + "B1".

    Se ho capito bene, salvo che i calcoli non possano essere facilmente replicati direttamente sulla userform, al tasto di modifica dovra essere associata una macro che scriverà sul foglio i dati modificati, eventualmente forza un ricalcolo del foglio di lavoro ed infine riporta i dati nella userform.

    Il codice sarà il medesimo di quello che già utilizzi.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-07-31T10:45:18+00:00

    Ti ringrazio ma ciò che tu mi hai fornito non fa altro che modificare i dati in tabella e sulla userform ho solo i dati che io ho modificato e non una textbox con i risultati dati dalle mie scelte di ritorno dalla tabella subito dopo la modifica...

    Io vorrei fare un refresh dei dati per poter vedere subito i cambiamenti dovuti alle modifiche fatte.

    Esempio:

    Se nella textbox1 metto 10 e lo scrivo sul foglio nella cella "A1" usando il tasto modifica

    nella textbox2 devo vedere il valore  che è il risultato (cella "C1" sul foglio) della somma di "A1" + "B1".

    Attualmente l'aggiornamento lo ottengo solo spostandomi sul record precedente e poi tornando sul record appena modificato.

    comunque grazie...

    La risposta è stata utile?

    0 commenti Nessun commento