Excel Forum Per condividere esperienze su Microsoft Excel

UserForm risultato formule

  • Messaggi
  • OFFLINE
    LadyExcel85
    Post: 3
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 13/11/2018 11:32
    Userform seleziona cella
    Ciao a tutti,

    chiedo nuovamente supporto per risolvere un problema.
    Ho creato una userform e vorrei che questa mi riportasse un messaggio e il valore di una cella non predefinita in una colonna.
    Cerco di spiegarmi meglio.
    Ho una macro che ogni volta che scrivo qualcosa in una cella qualsiasi tra B1 e B200 mi attiva un msgbox, il problema è che il msgbox non è personalizzabile, allora vorrei attivare piuttosto la userform che mi riporti il messaggio es."Ho scelto il numero" e il valore della cella tra B1 e B200 in cui avrò inserito il numero.
    Per esempio vado ad inserire 20 nella cella B40 vorrei che nella userform mi visualizzi "Ho scelto il numero 20" (prendendo il riferimento cella B40). E' possibile?
    Vi ringrazio anticipatamente.

    Saluti
    [Modificato da LadyExcel85 13/11/2018 11:33]
  • OFFLINE
    alfrimpa
    Post: 4.000
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 13/11/2018 11:56
    Ciao LadyExcel

    Non ti basterebbe una macro di questo tipo da inserire nel modulo del foglio interessato?

    vb
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("b:b")) Is Nothing Then
        MsgBox "Hai scelto il n. " & Target.Value & Chr(10) & "dalla cella " & Target.Address
    End If
    End Sub
    
    


    In che cosa non riesci a personalizzare il MsgBox?
    [Modificato da alfrimpa 13/11/2018 12:04]

    Alfredo
  • OFFLINE
    LadyExcel85
    Post: 3
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 13/11/2018 12:17
    Ciao, il msgbox sarebbe perfetto se fosse più grande e si potesse personalizzare colori e formattazione carattere, ma non ci riesco
  • OFFLINE
    alfrimpa
    Post: 4.001
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 13/11/2018 12:34
    Ah ok ora capisco; si va usata una userform.

    Ora provo a farti un esempio.

    Alfredo
  • OFFLINE
    alfrimpa
    Post: 4.002
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 13/11/2018 12:47
    Allora Lady

    1) crea un'userform con una label al suo interno
    2) inserisci questa macro nel modulo del foglio1

    vb
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
    Range("XFD1").Value = Target.Value
    UserForm1.Show
    End If
    End Sub


    3) inserisci questo codice nell'evento Initialize dell'userform

    vb
    Private Sub UserForm_Initialize()
    Me.Label1.Caption = "Hai scelto il n.: " & Range("XFD1").Value
    End Sub
    


    Poi puoi personalizzare l'userform come ti pare.

    P.S. Ma tu a conoscenza VBA come sei messa?
    [Modificato da alfrimpa 13/11/2018 12:48]

    Alfredo
  • OFFLINE
    LadyExcel85
    Post: 4
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 13/11/2018 13:00
    Dunque, a VBA sono messa che attualmente quando ho bisogno di fare qualcosa cerco su internet ciò che ho bisogno, trovo dei codici, li copio, cerco di adattarli finché risolvo...in pratica malissimo
    Ho l'obiettivo di imparare codice di programmazione VBA, ma il tempo scarseggia sempre...comunque credo tu abbia risolto il mio problema...grazie mille davvero
  • OFFLINE
    LadyExcel85
    Post: 5
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 14/11/2018 00:48
    Ulteriore domanda, ma non riesco proprio ad adattare questo codice.
    Se nella label della userform volessi che oltre alla cella B che viene selezionata in base all'inserimento, mi riportasse anche quanto scritto nella parallela cella della colonna A?
    Tipo: in B5 vado ad inserire il n.10 e in A5 c'è scritto Sara.
    Il messaggio della userform dovrebbe essere:
    "Hai selezionato: Sara, 10"
    Dove 10 lo preleva da B5 (la cella varia a seconda di dove vado ad inserire il numero) e il nome lo seleziona dalla corrispondente cella in colonna A.
    Non so se mi sono spiegata.
    Con la msgbox riuscivo, ma su userform non riesco.

    Grazie e saluti
  • OFFLINE
    LadyExcel85
    Post: 6
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 14/11/2018 00:55
    Di seguito il codice che utilizzavo nella msgbox:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
    r = Target.Row
    c = Target.Column
    If Target <> "" Then MsgBox ("Hai selezionato" & Cells(r, 1) & Target)
    End If
    End Sub
  • OFFLINE
    GiuseppeMN
    Post: 3.217
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/11/2018 07:27
    Buona giornata, LadyExcel85;
    un caro saluto ad Alfredo.

    Se ho interpretato correttamente la tua riesta potresti provare con un Evento del tipo:

    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("B:B")) Is Nothing Then
            UserForm1.Show
        End If
    End Sub
    

    e, in UserForm1, un Codice VBA del tipo:

    Option Explicit
    
    Private Sub UserForm_Initialize()
    Dim Cll As String, Nmx As String
    Dim VlR As Integer
    
        Nmx = Cells(ActiveCell.Row, 1).Value
        VlR = ActiveCell.Value
        Cll = ActiveCell.Address
            Me.Label1.Caption = "Hai modificato la Cella: " & Cll & Chr(10) & " Il Valore è: " & Nmx & ", " & VlR
    End Sub
    




    A disposizione.

    Buon Lavoro

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013
  • OFFLINE
    LadyExcel85
    Post: 7
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 14/11/2018 13:09
    No, in questo modo mi indica il valore della cella successiva a quella modificata, non so il perché, io modifico B2 e la userform mi riporta il valore di B3.
    Se mi riportasse il valore corretto sarebbe quasi a posto.
    Ma poi non mi deve riportare quale cella ho modificato, non mi interessa, nel messaggio dovrebbe esserci:
    "Hai selezionato: Sara (o qualsiasi altra cosa ci sia scritta in A2), 10 (o qualsiasi altro numero scriverò in B2)"
    Il messaggio deve essere generato in base all'inserimento dati nelle celle della colonna B.
    Ovvero, se B2 è diverso da vuoto la userform dovrebbe riportarmi il dato contenuto in B2 e quello contenuto in A2, e così via di seguito, quando andrò a scrivere in B50 mi attiverà la userform con messaggio che riporta quanto scritto in B50 e in A50...
    Spero di essermi spiegata meglio, grazie ancora del supporto.

    Saluti
  • OFFLINE
    LadyExcel85
    Post: 7
    Registrato il: 26/10/2018
    Città: CASALE MONFERRATO
    Età: 38
    Utente Junior
    2016
    00 14/11/2018 13:22
    Scusate, ho finalmente risolto, ho inserito il riferimento Cells(r,1) nel codice di Alfredo, ora funziona perfettamente!

    Questo è il codice utilizzato nell'evento:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r, c
    If Not Intersect(Target, Range("B:B")) Is Nothing Then
    r = Target.Row
    c = Target.Column
    If Target <> "" Then Beep
    Range("XFD1").Value = Cells(r, 1) & " " & Target.Value
    UserForm1.Show
    End If
    End Sub

    E questo quello della userform: 

    Private Sub UserForm_Initialize()
    Me.Label1.Caption = "Hai selezionato:" & " " & Range("XFD1").Value
    End Sub

    Grazie mille dell'aiuto
  • OFFLINE
    GiuseppeMN
    Post: 3.219
    Registrato il: 03/04/2013
    Utente Master
    Excel 2000 - 2013
    00 14/11/2018 18:18
    Buona sera, @LadyExcel85;
    solo ora ho potuto dedicarmi alla tua Risposta #10

    @LadyExcel85, scrive:



    No, in questo modo mi indica il valore della cella successiva a quella modificata, non so il perché, io modifico B2 e la userform mi riporta il valore di B3.
    Se mi riportasse il valore corretto sarebbe quasi a posto.


    È necessario adattare il Codice "Private Sub UserForm_Initialize() in funzione di "come hai impostato la "Direzione del cursore dopo ''INVIO''"

    Questo, a priori non potevo saperlo; ad esempio io avevo impostato la "Direzione" su "Fermo".
     MoveAfterReturn = False 


    @LadyExcel85, scrive:



    Se mi riportasse il valore corretto sarebbe quasi a posto.
    Ma poi non mi deve riportare quale cella ho modificato, non mi interessa, nel messaggio dovrebbe esserci:
    "Hai selezionato: Sara (o qualsiasi altra cosa ci sia scritta in A2), 10 (o qualsiasi altro numero scriverò in B2)"
    Il messaggio deve essere generato in base all'inserimento dati nelle celle della colonna B.
    Ovvero, se B2 è diverso da vuoto la userform dovrebbe riportarmi il dato contenuto in B2 e quello contenuto in A2, e così via di seguito, quando andrò a scrivere in B50 mi attiverà la userform con messaggio che riporta quanto scritto in B50 e in A50...



    Ovviamente, realizzare ciò non era un problema.



    Buona serata.

    Giuseppe

    Windows XP - Excel 2000
    Windows 10 - Excel 2013