| | Post: 21 | Registrato il: 19/06/2016
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
12/07/2017 20:43 | |
Amici,
vorrei creare un pulsante (macro) dove l'ho disegnato ovvero nel primo foglio di lavoro, che attivato, cerca i codici fiscali dei soggetti disposti negli altri fogli e se lo trova rimanda l'utente al foglio direttamente.
Mi serve perchè devo inviarlo alla clientela di Studio ma non vorrei che perdessero tempo e poi magari neanche lo sanno usare.
Quindi ho pensato che con un cerca trova un po' più automatizzato tutto può diventare più semplice.
Se riuscite a darmi una mano, vi allego il relativo file e vi ringrazio anticipatamente.
|
|
| | Post: 3.361 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
12/07/2017 23:33 | |
Ciao Michele
Prova con la macro che vedi sotto
vb Sub trovaCF()
Dim i As Integer
Dim rng As Range
Dim CF As String
On Error Resume Next
CF = InputBox("Immettere il Codice fiscale", "Ricerca Codice Fiscale")
If CF = "" Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To Sheets.Count
With Sheets(i).Range("A:A")
Set rng = .Find(What:=CF, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not rng Is Nothing Then
Sheets(rng.Parent.Name).Activate
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
Non sapendo come volessi inserire il CF al lancio della macro viene visualizzata.
Ti allego il file.
Alfredo |
| | Post: 509 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | OFFLINE |
|
13/07/2017 00:06 | |
Un saluto a tutti.
Vedo che ormai arrivo tardi ma considerato che anch'io ho bozzato una macro da agganciare al pulsante la riporto.
Però rimane un dubbio, ma gli utilizzatori sapranno attivare l'uso delle macro in Excel ? Option Explicit
Sub Cerca_In_Fogli()
Dim cf As Variant
Dim trova As Range
Dim sht As Worksheet
cf = Application.InputBox("Indica il Codice Fiscale da cercare", "Cerca")
If cf = False Then 'se Annullo o Chiudo abbandona macro
Exit Sub
End If
If cf = "" Then 'se il campo vuoto abbandona macro
MsgBox "Non hai indicato il Codice Fiscale da cercare", vbExclamation
Exit Sub
End If
For Each sht In Worksheets
If sht.Name <> "Istruzioni" Then 'escludi il primo foglio
sht.Select 'attiva il foglio da controllare
Set trova = Range("A:A").Find(cf, LookIn:=xlValues, LookAt:=xlPart) 'cerca nella colonna dei codici fiscali
If Not trova Is Nothing Then 'se trovo il codice procedi
trova.Select 'seleziona cella trovata
Exit Sub 'termina macro
End If
End If
Next sht
MsgBox "Codice Fiscale non trovato !", vbExclamation
End Sub [Modificato da rollis13 13/07/2017 00:09]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 21 | Registrato il: 19/06/2016
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
13/07/2017 07:48 | |
|
| | Post: 3.362 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/07/2017 08:32 | |
E se non le attivi come fai ad eseguirle?
Se uno chiede una macro si presuppone che ce le abbia attivate.
Alfredo |
| | Post: 22 | Registrato il: 19/06/2016
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
13/07/2017 10:08 | |
Ok per l' attivazione.
Oggi però in fase di prova è sorto un altro problema sollevato da un cliente
Su Excel 2017 non funziona, mi spiego una volta che si digita il codice fiscale è lo trova ti rimanda solo nel foglio dove l'ha trovato ma non mi indica qual'è
Su Excel 2010 invece mi trova il codice fiscale e me lo identifica con un tratteggio continuo
La domanda è come poter migliorare in caso si abbiano più versioni excel?
E' possibile inserire nella macro stessa che se lo trova ti colora la riga di riferimento oppure ti scrive l'ho trovato è il seguente....
|
| | Post: 3.364 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/07/2017 12:15 | |
Michele per quanto riguarda l'evidenziazione della riga sostituisci il codice precedente con questo
vb Sub trovaCF()
Dim i As Integer
Dim rng As Range
Dim CF As String
On Error Resume Next
CF = InputBox("Immettere il Codice fiscale", "Ricerca Codice Fiscale")
If CF = "" Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To Sheets.Count
Sheets(i).Cells.Interior.ColorIndex = xlNone
With Sheets(i).Range("A:A")
Set rng = .Find(What:=CF, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not rng Is Nothing Then
Sheets(rng.Parent.Name).Activate
rng.EntireRow.Interior.ColorIndex = 6
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
Quanto ai malfunzionamenti che rilevi (e che io non ho) avendo solo Excel 2013 non posso fare prove e non posso risponderti.
Alfredo |
| | Post: 23 | Registrato il: 19/06/2016
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
13/07/2017 15:19 | |
Grazieeeeeee Alfredo ora funziona!!
Un'altra "pippa" degli utenti è questa, quando non trova il CF la macro non dice ad esempio "Codice fiscale non trovato" è sottointeso.
Ma qualcuno mi ha fatto notare che non vedendo alcun messaggio pensa non funzioni.
E' possibile dire nella macro quando non trova il CF : " Codice Fiscale non trovato" |
| | Post: 3.366 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/07/2017 15:52 | |
Sostituisci la vecchia macro con questa
vb Sub trovaCF()
Dim i As Integer
Dim rng As Range
Dim CF As String
On Error Resume Next
CF = InputBox("Immettere il Codice fiscale", "Ricerca Codice Fiscale")
If CF = "" Then Exit Sub
Application.ScreenUpdating = False
For i = 2 To Sheets.Count
Sheets(i).Cells.Interior.ColorIndex = xlNone
With Sheets(i).Range("A:A")
Set rng = .Find(What:=CF, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not rng Is Nothing Then
Sheets(rng.Parent.Name).Activate
rng.EntireRow.Interior.ColorIndex = 6
Else
MsgBox "Codice fiscale non trovato"
End If
End With
Next i
Application.ScreenUpdating = True
End Sub
Alfredo |
| | Post: 24 | Registrato il: 19/06/2016
| Città: MILANO | Età: 44 | Utente Junior | 2010 | | OFFLINE | |
|
13/07/2017 17:08 | |
Grazie Alfredo
|
| | Post: 1.468 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
13/07/2017 17:23 | |
Fiore.Michele, 13/07/2017 15.19:
.....Un'altra "pippa" degli utenti.....qualcuno mi ha fatto notare che non vedendo alcun messaggio pensa non funzioni....
Vedrai che "qualcun altro" ti farà notare che i CF trovati restano evidenziati e se la ricerca di un nuovo CF porta nello stesso foglio in cui ci sono altri CF evidenziati, "l'utente resterà disorientato" anche se viene selezionata la relativa riga.
Te lo dico solo perché conosco bene "la razza utenti..." eh..eh..eh
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 3.367 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/07/2017 18:44 | |
Scusa Domenico mi puoi spiegare meglio?
Con questa istruzione
vb Sheets(i).Cells.Interior.ColorIndex = xlNone
elimino le precedenti evidenziazioni.
Perché dici:
"Vedrai che "qualcun altro" ti farà notare che i CF trovati restano evidenziati e se la ricerca di un nuovo CF porta nello stesso foglio in cui ci sono altri CF evidenziati"?
Mi son perso qualcosa?
Alfredo |
| | Post: 1.472 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
13/07/2017 19:06 | |
Alfredo....perdono!!! non l'avevo visto...mannaggia quelli anziani!!
scusami
cari saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 3.369 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | ONLINE |
|
13/07/2017 19:23 | |
dodo47, 13/07/2017 19.06:
Alfredo....perdono!!! non l'avevo visto...mannaggia quelli anziani!!
scusami
cari saluti
Ma se andiamo a braccetto
Temevo di aver fatto una qualche "cappellata" (cosa non difficile )
Un caro saluto anche a te.
Alfredo |
| | Post: 3 | Registrato il: 30/05/2017
| Città: AOSTA | Età: 62 | Utente Junior | 2013 | | OFFLINE | |
|
13/07/2017 22:08 | |
Ciao a tutti,
e che dire di quelli che ti fanno notare che con cinque MsgBox consecutivi anche se viene trovato il codice inserito, "l'utente resterà disorientato".
Nonostante le mie competenza con VBA sia inversamente proporzionale all'esperienza con utenti disorientati, ho provato a rimediare, a scopo autodidattico.
Sono ovviamente graditi suggerimenti e critiche.
Option Explicit
Sub trovaCF2 ()
Dim trovato As Boolean
Dim I As Long
Dim CF As String
Dim CodicePresente As Range
CF = InputBox("Immettere il Codice fiscale", "Ricerca Codice Fiscale")
If CF = "" Then Exit Sub
Application.ScreenUpdating = False
For I = 2 To Sheets.Count
Sheets(I).Cells.Interior.ColorIndex = xlNone
Set CodicePresente = Sheets(I).Cells.Find(CF, LookIn:=xlValues, LookAT:=xlWhole)
If Not CodicePresente Is Nothing Then
Sheets(I).Select
CodicePresente.Activate
CodicePresente.EntireRow.Interior.ColorIndex = 6
trovato = True
End If
Next I
If trovato = False Then
MsgBox "Codice fiscale non presente!", vbExclamation
End If
Application.ScreenUpdating = True
End Sub
|
|
|