| | Post: 2 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 11:42 | |
Buongiorno a tutti e grazie a colui che molto probabilmente riderà sotto i baffi, nel caso li abbia.
Il fatto è il seguente; ho assemblato o meglio scopiazzato una userform la quale cerca un valore in tutti i fogli, restituisce l'indicazione di dove è il valore e ti ci porta sopra.
il fatto è che non ha delle variabili ossia se inserisco bordolese mi da tutte le celle che contengono bordolese, ma se inserisco bordolese 75 (per creare una ricerca più mirata non parte la ricerca.
Altra cosa è che individuata la cella di destinazione vorrei che si evidenziasse (in giallo) non che cambiasse il colore del fondo, per trovarla subito.
Grazie ancore se qualcuno vorrà aiutarmi, dato che sto impazzendo.
allego file alleggerito. |
|
| | Post: 2.109 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
24/01/2019 13:31 | |
ciao
dov'è bordolese 75 nel tuo documento ?
Domenico
Win 10 - Excel 2016 |
| | Post: 2 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 13:50 | |
Ciao, per esempio, la cella B11:
VNSBORDSTDE 750;TS-;MB-;VI- BORDOLESE ECOVA / CC.750 T.SUGH. MB
se io scrivo bordolese lui trova una serie di bordolesi,
se io scrivessi bordolese 75 (in realta CC.750)
lui non trova nulla
cioè non accetta gli spazzi e non è una ricerca intuitiva ma matematica ... mi sono espresso bene?
|
| | Post: 2.110 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
24/01/2019 16:25 | |
ciao
si, ti sei espresso bene. Il problema risiede nella modalità di ricerca che la macro adotta, pertanto i tuoi "spazi" non vengono considerati come "qualsiasi cosa ci sia tra bordolese e 75", ma "bordolese spazio 75".
Prova ad utilizzare la seguente modifica:
(per quanto riguarda l'evidenziazione spiega meglio cosa vuoi, non ho capito)
saluti
Private Sub Cerca_Click()
Dim i As Long
Dim testo As String
Dim a As Integer
Dim x As Long
Dim y As Long
Dim uriga As Integer
Dim ucolonna As Integer
Dim mTxt As Variant
Application.ScreenUpdating = False
ListBox1.Clear
testo = ""
mTxt = Split(TextBox1, " ")
For i = 0 To UBound(mTxt)
testo = testo & "*" & mTxt(i)
Next i
testo = testo & "*"
a = 0
For i = 1 To Worksheets.Count
With Worksheets(i).UsedRange
uriga = .Rows.Count + .Row - 1
ucolonna = .Columns.Count + .Column - 1
End With
For x = 1 To uriga
For y = 1 To ucolonna
If Worksheets(i).Cells(x, y) Like testo Then
ListBox1.AddItem Sheets(i).Name
ListBox1.List(a, 1) = Sheets(i).Cells(x, y).Row
ListBox1.List(a, 2) = Sheets(i).Cells(x, y).Column
ListBox1.List(a, 3) = Sheets(i).Cells(x, y).Value
a = a + 1
End If
Next y
Next x
Next i
Application.ScreenUpdating = True
End Sub
[Modificato da dodo47 24/01/2019 16:27] Domenico
Win 10 - Excel 2016 |
| | Post: 3 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 16:36 | |
Grazie Dodo47 per il tuo aiuto,
ma ho modificato la sub nell'userform e non trova nulla!
ossia il codice è:
Private Sub Cerca_Click()
Dim i As Long
Dim testo As String
Dim a As Integer
Dim x As Long
Dim y As Long
Dim uriga As Integer
Dim ucolonna As Integer
Dim mTxt As Variant
Application.ScreenUpdating = False
ListBox1.Clear
testo = ""
mTxt = Split(TextBox1, " ")
For i = 0 To UBound(mTxt)
testo = testo & "*" & mTxt(i)
Next i
testo = testo & "*"
a = 0
For i = 1 To Worksheets.Count
With Worksheets(i).UsedRange
uriga = .Rows.Count + .Row - 1
ucolonna = .Columns.Count + .Column - 1
End With
For x = 1 To uriga
For y = 1 To ucolonna
If Worksheets(i).Cells(x, y) Like testo Then
ListBox1.AddItem Sheets(i).Name
ListBox1.List(a, 1) = Sheets(i).Cells(x, y).Row
ListBox1.List(a, 2) = Sheets(i).Cells(x, y).Column
ListBox1.List(a, 3) = Sheets(i).Cells(x, y).Value
a = a + 1
End If
Next y
Next x
Next i
Application.ScreenUpdating = True
End Sub
Private Sub CommandButton1_Click()
ListBox1.Clear
TextBox1 = ""
TextBox1.SetFocus
End Sub
Private Sub Fine_Click()
Unload UsrCercaValori
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim a As Integer
Dim fog As String
Dim rig As Long
Dim col As Long
a = ListBox1.ListIndex
fog = ListBox1.List(a, 0)
rig = ListBox1.List(a, 1)
col = ListBox1.List(a, 2)
Sheets(fog).Activate
ActiveSheet.Cells(rig, col).Select
Cancel = True
Unload UsrCercaValori
End Sub
Private Sub ListBox2_Click()
End Sub
Private Sub UserForm_Initialize()
ListBox2.ColumnHeads = False
ListBox2.RowSource = ("XFA1:XFD1")
End Sub
-- non mi gira!
dove sbaglio?
|
| | Post: 4 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 16:38 | |
per quanto riguarda l'altro aspetto, quando doppio clic sul risultato all'interno della listbox, quindi mi porta nel foglio nella cella da me ricercata, vorrei evidenziarla (ho problemi con la vista). Grazie ancora |
| | Post: 5 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 16:50 | |
Fermi tutti, evidentemente avevo commesso un errore, Funziona!
Grazie Dodo47! se mi risolvi di evidenziare la cella di destinazione io sto a posto... grazie ancora
|
| | Post: 2.111 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
24/01/2019 18:33 | |
linolene, 24/01/2019 16.38:
per quanto riguarda l'altro aspetto, quando doppio clic sul risultato all'interno della listbox, quindi mi porta nel foglio nella cella da me ricercata, vorrei evidenziarla (ho problemi con la vista). Grazie ancora
Si, ma hai detto:
..."vorrei che si evidenziasse (in giallo) non che cambiasse il colore del fondo....
quindi cosa vuoi che avvega?, si deve colorare il testo in giallo?? Ma sarà ancon meno leggibile (a mio avviso)
saluti
[Modificato da dodo47 24/01/2019 18:34] Domenico
Win 10 - Excel 2016 |
| | Post: 6 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 19:03 | |
chiarisco, io ho problemi di vista, quando clicco sulla riga dentro la ListBox vengo dirottato nella cella corrispondente. ora proprio perchè non ci vedo bene mi perdo la cella dove sono stato dirottato, in quanto poco visibile:
cosa si può fare per evidenziare questa cella? o riga!
in modo che subito la riconosco!
Grazie per la pazienza |
| | Post: 2.112 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
24/01/2019 20:12 | |
ciao
tu hai detto di non cambiare il colore di sfondo.
Quindi se escludiamo questo, oppure la bordatura dell'intera riga, non saprei come altro evidenziare la riga/celle.
Se aumentiamo il carattere, si vede meglio ma si rischia che il testo della cella di cui si aumenta il carattere, vada a capo, imbrogliando ancor più la faccenda.
Tieni presente una cosa: se optiamo per il colore di sfondo, prima si devono cancellare tutti i colori che eventualmente esistono nel foglio e poi si evidenzia la sola riga interessata che pertanto sarà l'unica colorata del foglio.
In ultimo si potrebbe rendere lampeggiante la cella....ma nel momento che il lampeggio smette, la perderesti di vista.
Tutto ciò premesso, ti suggerisco di dirmi tu in quale modo vuoi che la cella sia evidenziata (fai delle prove) e, una volta trovato il modo migliore per te, me lo dici e cerchiamo di risolvere.
Cari saluti.
[Modificato da dodo47 24/01/2019 20:20] Domenico
Win 10 - Excel 2016 |
| | Post: 7 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
24/01/2019 20:44 | |
eccoci, tu dici la bordatura della riga, attualmente la bordadutura
è solo della cella, se fosse tutta la riga diverrebbe certamente più
visibile.
ma che pensi tu di questa userform?
|
| | Post: 2.113 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
25/01/2019 15:41 | |
Ciao
la user e i relativi codici sono ben fatti, poi dipende se uso che ne devi fare è consono alle tue necessità.
Prima di provare a risolvere la faccenda dell'evidenziazione ho necessità di sapere la reale struttura dei tuoi fogli.
Intanto, per facilitare il compito, è opportuno che tu trasformi la tabella del primo foglio in un range normale (quindi eliminare la tabella e lasciare i dati così come sono glia altri fogli).
Poi dovresti specificare se i vari fogli hanno una stessa struttura (cosa che non mi sembra).
Il tutto serve per individuare in ciascun foglio qual è l'ultima riga piena, in quanto, per evidenziare una determinata riga, prima è indispensabile togliere le precedenti bordature.
Spero di essermi spiegato.
saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 8 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
25/01/2019 21:53 | |
Buonasera Domenico,
il primo foglio è un estratto di vendite dell'anno precedente,
con il quale rispetto a nuovi listini mi baso per i prezzi nuovi,
ho seguito il tuo consiglio, ho tolto la formattazione tabella (mi è costato un casino, mi ha creato un foglio con di 1045600 righe 25 mega, comunque risolto); gl'altri otto fogli, sono tutti listini, fitti fitti ma non grandi. utilizzando il tasto cerca sul primo foglio mi ha risolto una ricerca da brivido. tu dimmi ed io faccio.
|
| | Post: 2.114 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
26/01/2019 10:04 | |
ciao
ripeto: abbiamo la necessità di poter rilevare l'ultima riga con valori di ciascun foglio (qualsiasi sia la colonna).
Questo perchè, prima di bordare la riga interessata, bisogna togliere le precedenti bordature.
Comunque, facciamo una prova, vedi se ti sta bene l'allegato: ho apportato diverse modifiche ai codici ed aggiunto un evento sulla selezione dei fogli che cancella le bordature precedenti.
Saluti
Domenico
Win 10 - Excel 2016 |
| | Post: 9 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
26/01/2019 13:25 | |
Buongiorno Domenico,
se ho capito bene:
la struttura e quella in foto,
L'ultima riga con valore di ciascun foglio sono:
foglio1 riga 1120
foglio2 riga 458
foglio3 riga 255
foglio4 riga 30
foglio5 riga 28
foglio6 riga 490
foglio7 in costruzione (come si fa?)
foglio8 riga 112
foglio9 riga 136
foglio10 riga 24
il file di esempio, immagino come ti aspettavi, non va.
Grazie ancora!
PS. ma vuoi che ti invio il mio file in un luogo sicuro? dati sensibili!
|
| | Post: 5.623 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
26/01/2019 15:56 | |
Ciao, si potrebbe usare un ciclo Sheets.count per pulire i bordi, per passare tutti i fogli e lanciare
Cells.Borders.LineStyle = xlNone
non ha importanza la lunghezza delle righe, nel caso mentre si passano i fogli si potrebbe anche ricavare la lunghezza delle righe.
Ciao By Sal
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 2.116 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
26/01/2019 16:25 | |
linolene, 26/01/2019 13.25:
il file di esempio, immagino come ti aspettavi, non va.
No, non me lo aspettavo anche perchè a me funziona perfettamente.
cosa non va?
( x By Sal: è quello che ho messo nel mio codice:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Cells.Borders.LineStyle = xlNone
End Sub )
[Modificato da dodo47 26/01/2019 16:28] Domenico
Win 10 - Excel 2016 |
| | Post: 10 | Registrato il: 21/01/2017
| Città: ARTENA | Età: 52 | Utente Junior | 2016 | | OFFLINE | |
|
26/01/2019 18:16 | |
è incredibile!
il tuo file è giusto la bordatura rossa è a prova di ceco,
ho inserito come da jpg, ma non va!
provo a smanettare, qualcuno dice scacherare! |
|
|