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

UserForm risultato formule

Ultimo Aggiornamento: 14/11/2018 18:18
Post: 3
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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]
Post: 4.000
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
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
Post: 3
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 4.001
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
13/11/2018 12:34

Ah ok ora capisco; si va usata una userform.

Ora provo a farti un esempio.

Alfredo
Post: 4.002
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
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
Post: 4
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 5
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 6
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 3.217
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
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
Post: 7
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 7
Registrato il: 26/10/2018
Città: CASALE MONFERRATO
Età: 38
Utente Junior
2016
OFFLINE
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
Post: 3.219
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
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
Vota:
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 04:39. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com