| | Post: 3 | Registrato il: 26/10/2018
| Città: CASALE MONFERRATO | Età: 38 | Utente Junior | 2016 | | OFFLINE | |
|
13/11/2018 11:32 | |
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". @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 |
|
|