Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 2 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Listbox ricerca con testo

Ultimo Aggiornamento: 03/01/2020 17:24
Post: 12
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 11:21

Anzitutto BUON NATALE!!!

Salve Mi chiamo Fabrizio, purtroppo non sono molto esperto del vba e avrei la neccessita di ricercare tramite listbox del testo che possa trovarsi ho nella colonna A oppure B oppure C oppure D o E.
Dando un'occhiata in giro ho trovato quello che farebbe al caso mio, ho il codice ma non riesco a completarlo se qualcuno Gentilmente mi potesse Aiutare.
Allego il file e come riferimento avrei neccessita' di ricercare nel foglio 18 "elenco prezzi2"
E da ricercare sarebbero 5 colonne

Private Sub TextBox1_Change()
Dim i As Long
On Error Resume Next
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase)
Me.ListBox1.Clear
For i = 2 To Application.WorksheetFunction.CountA(Sheet18.Range("a:a"))
For x = 1 To 5
a = Len(Me.TextBox1.Text)
If Left(Sheet18.Cells(i, x).Value, a) = Me.TextBox1.Text And Me.TextBox1.Text <> "" Then
Me.ListBox1.AddItem Sheet18.Cells(i, 1).Value
For c = 1 To 4
Me.ListBox1.List(ListBox1.ListCount - 1, c) = Sheet18.Cells(i, c + 1).Value
Next c
End If
Next x
Next i
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.SetFocus
End Sub


Nel foglio è gia' presente nel vba la userform con i pulsanti e il codice.
grazie...
Post: 4.196
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
24/12/2019 11:56

nel file allegato non ci sono pulsanti, solo tanti moduli e tante macro.
Inoltre spiega meglio il tuo obiettivo, a cosa ti selve la listbox, come la vuoi popolare ecc...

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 12
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 12:20

Ciao, e grazie mille.
riallego il file con il pulsante rinomiato "lista" presente nel foglio "sal" in alto a destra.
una volta che clicco sul pulsante "lista" si apre la userform1 con una listbox e un campo di ricerca.
In pretica quando scrivo nel campo di ricerca qualcosa, nella listbox si dovrebbe filtrare la ricerca per tutte e 5 le colonne presenti nel foglio che si chiama "elenco prezzi2".
Per chiarezza allego il collegamento al video da cui ho preso spunto
https://www.youtube.com/watch?v=nvl-Uifgj9Q
grazie.
Post: 4.197
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
24/12/2019 13:58

Quando copi una macro poi devi adattarla al tuo caso, ha scritto Sheet18, questo vale per un foglio in inglese, tu devi scrivere Sheets("nomedelfoglio") quindi non è necessario aprire 18 fogli e poi eliminarli...
Private Sub TextBox1_Change()
Dim i As Long
On Error Resume Next
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase)
Me.ListBox1.Clear
For i = 2 To Application.WorksheetFunction.CountA(Sheets("Elenco Prezzi2").Range("a:a"))
  For x = 1 To 5
    a = Len(Me.TextBox1.Text)
    If Left(Sheets("Elenco Prezzi2").Cells(i, x).Value, a) = Me.TextBox1.Text And Me.TextBox1.Text <> "" Then
      Me.ListBox1.AddItem Sheets("Elenco Prezzi2").Cells(i, 1).Value
      For c = 1 To 4
        Me.ListBox1.List(ListBox1.ListCount - 1, c) = Sheets("Elenco Prezzi2").Cells(i, c + 1).Value
      Next c
    End If
  Next x
Next i
End Sub

e toglierei la riga
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase
[Modificato da patel45 24/12/2019 14:02]

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 13
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 14:36

Ciao ho fatto la modicica cavando
Me.TextBox1.Text = StrConv(Me.TextBox1.Text, vbProperCase) e mi sembra funzioni meglio, pero' vedo che non è lineare, rimangono presenti tanti risultati che a io non vorrei vedere....
esenmpio scrivo "aa" la riga di sinistra rimangono tutti i numeri fino al 200 .. e nelle altre colonne...
riesci a modificare il codice per avere un risultato nella listbox? e non tanti risultati che non centrano??
grazie



Private Sub TextBox1_Change()
Dim i As Long
On Error Resume Next
Me.ListBox1.Clear
For i = 2 To Application.WorksheetFunction.CountA(Sheets("Elenco Prezzi2").Range("b:b"))
For x = 1 To 5
a = Len(Me.TextBox1.Text)
If Left(Sheets("Elenco Prezzi2").Cells(i, x).Value, a) = Me.TextBox1.Text And Me.TextBox1.Text <> "" Then
Me.ListBox1.AddItem Sheets("Elenco Prezzi2").Cells(i, 1).Value
For c = 1 To 4
Me.ListBox1.List(ListBox1.ListCount - 1, c) = Sheets("Elenco Prezzi2").Cells(i, c + 1).Value
Next c
End If
Next x
Next i
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.SetFocus
End Sub

Post: 14
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 14:53

Scusami ritiro, ho riprovato bene e mi sembra cosi' funzioni alla grande!!!
se poi c'è altro ti scrivo grazie ancora e Buon Natale
Post: 15
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 15:10

Ecco Gentilissimo, PATEL45
se in "elenco prezzi2" inserisco un voce molto lungo tipo 2 o 3 righe ho notato che nella listbox non mi appare se non la prima riga il resto del testo non viene considerato e non appare in "listbox".
spero di essermi spiegato..
avresti un soluzione??
grazie
Post: 16
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
24/12/2019 15:19

E ultima cosa se esiste un modo per dare le dimensioni volute alla larghezza per ogni colonna della listbox? ovvero Excel divide in 5 parti uguali la listbox ...
Post: 4.294
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
24/12/2019 18:20

Devi impostare la proprietà ColumnWidth della listbox o nella finestra delle proprietà o tramite codice.

Alfredo
Post: 17
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
25/12/2019 17:32

Ciao ho fatto una prova, e avendo una listbox composta di 5 colonne la modifica avviene per la prima delle 5 colonne, e chiedo se ci fosse la possibilità di impostare un "auto size" in altezza che in larghezza per le righe della "listbox"?
Post: 4.295
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
25/12/2019 18:19

Devi impostare la larghezza di tutte e 5 le colonne non solo della prima.

Non credo che esista un “autosize” della larghezza delle colonne; l’alzezza delle righe è immodificabile.

Alfredo
Post: 14
Registrato il: 22/11/2002
Utente Junior
2010
OFFLINE
26/12/2019 11:35

Si potrebbe avere il file funzionante??
Grazie e buone feste a tutti.
Post: 4.198
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
27/12/2019 07:09

prova con una listview che è una listbox più evoluta

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 5.798
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
27/12/2019 12:10

Listbox
Ciao Fabrizio, da quello che ho capito, a te serve soltanto l'indice cioè la prima colonna da inserire nel computo metrico, ma la devi cercare in base al testo.

cioè se scrivi "Solaio" devono comparirti tutte le voci che contengono "Solaio", poi vedi il numero della voce e lo scrivi nel computo.

questa userform fa quello che chiedi, inserisci i caratteri che ti servono, vedi il numero della voce e la scrivi sul foglio, per vedere un altra voce cancella la textbox e fai una nuova ricerca, quando hai finito chiudi la userform, puoi anche spostarla sul foglio se ti da problemi di visualizzazione.

non ho capito a cosa ti serve l'altezza delle righe, inoltre credo che a te interesserebbe solo la descrizione e non anche il prezzo, se non che per la stessa voce ci siano prezzi differenti in un contesto diverso.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 22
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
27/12/2019 18:23

Ciao grazie Per tutti gli aiuti...
Ho provato la userform ed è simile a quella che avevo fatto,e funziona , ma il problema è che quando hai una voce di capitolato abbastanza lunga avrei la neccessita' di vedere per intero la voce di capitolato nella userform, e purtroppo "testo a capo" la userform non lo fa , ..se non mi sbaglio...
allora per ovviare al problema ho creato questo codice...

Sub Pulsante123_Click()
' Pulsante123_Click Macro
Sheets("Elenco Prezzi2").Select
Range("A2:E2").Select
Range(Selection, Selection.End(xlDown)).Select
SendKeys "^+{t}"
SendKeys " % {z} "
SendKeys " % {e}{v} "

SendKeys " ~"

End Sub

questo codice mi rimanda alla pagina elecoprezzi2 mi seleziona le righe e apre lo strumento "trova" e cosi' mi evidenzia la parola scritta, pero' vedo la voce per intero...
sicuramente la userform ha un altro aspetto ma se non mi mostra la voce per intero "come testo a capo", per me è un problema visto a volte sono diverse le voci con le stesse parole ripetute..
Spero' di essermi riuscito a spiegare.
grazie .
Post: 4.300
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
27/12/2019 18:28


e purtroppo "testo a capo" la userform non lo fa



Questo non è vero.

La userform non c'entra nulla; vanno impostate a True le proprietà WordWrap e Multiline della Textbox che ti interessa.
[Modificato da alfrimpa 27/12/2019 18:33]

Alfredo
Post: 5.800
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
28/12/2019 19:00

Listbox
Ciao vedi se questo risultato può andarti bene, non usa il Multiline, perche la listbox non lo consente.

ma ho fatto in modo da autodimensionare sia la listbox che l'userform in base alla ricerca.

se l'userform esce fuori schermo puoi spostarla con il Mouse, per leggere meglio.

cancellando la ricerca ritorna alla dimensione normale.

Ciao By Sal [SM=x423051]
[Modificato da by sal 28/12/2019 19:04]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 24
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
28/12/2019 21:31

ciao grazie di cuore !! per quello che hai fatto.
pero' diventa un po scomodo spostare la userform con il mouse...alcune voci sono davvero molto lunghe.
Non vorrei essere troppo esigente,per fare una userform tipo multiline ????? [SM=x423024] [SM=x423028]

Post: 2.476
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
28/12/2019 22:36

ciao
non puoi farlo con una listbox. Devi trasformare la lBox in ListView con quel che comporta la variazione del codice.

In alternativa ti sottopongo un esempio, precisandoti che non ho visto il tuo lavoro:

cliccando sul pulsante si apre una uForm con annessa listBox nella quale vengono visualizzati i dati di colonna A,B e C.

Ovviamente i dati della col. A sono visualizzati parzialmente.

Se fai doppio click su una riga della listBox, ti verrà mostrato l'intero contenuto della colonna A. Cliccando fuori dalla ListBox, verrà nuovamente visualizzato l'elenco.

"Il trucco" è semplice: c'è una textBox creata "on fly" delle stesse dimensioni della listBox che viene valorizzata con il contenuto della prima colonna della lBox e resa visibile.

Da adattare alle tue esigenze.
saluti




[Modificato da dodo47 29/12/2019 11:27]
Domenico
Win 10 - Excel 2016
Post: 5.804
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
29/12/2019 11:45

Listbox
Ciao, Domenico che saluto, mi ha dato l'idea, vedi se ti va bene, ho messo una textbox multiline, in modo che visualizza tutto il testo, in questo modo puoi fare la scelta.



selezionando la voce nel listbox vedi la descrizione.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
29/12/2019 12:56

Sul file di by sal ho modificato questi errori...e tolto i parametri per ingrandire l'userform
Set sh1 = Worksheets("Elenco Prezzi2")>>>... con Set sh1 = ActiveWorkbook.Worksheets("Elenco Prezzi2")
Set sh2 = Worksheets("Sal")>>>...con Set sh2 = ActiveWorkbook.Worksheets("Sal")
MsgBox (ListBox1.listwrapper.GetSelected)>>>... con MsgBox ListBox1.List(ListBox1.ListIndex, 1)

Ieri sera "stessa idea" di by sal, però non riesco mettere i titoli nella listbox1 (mi aiutate per cortesia?)
ListBox1.ColumnCount = 5
ListBox1.ColumnWidths = "30;600;40;40;40"
ListBox1.ColumnHeads = True
ListBox1.AddItem sh1.Cells(3, 1) No,scrive sotto la riga
ListBox1.AddItem sh1.Cells(3, 2) No, scrive ancora più sotto

In teoria clicchi nella listbox e vedi nella testbox2, una volta scelto si preme OK ed valoriziamo una variabile publica
(cosa si deve farne, intendo dire ... cercarla in Sal/scriverla da qualche parte)
[Modificato da ABCDEF@Excel 29/12/2019 13:06]
Post: 2.478
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
29/12/2019 16:47

ciao
sfortunatamente per aggiungere i titoli ad una lBox, la devi legare ad un range; non c'è modo di farlo tramite codice come hai fatto tu.

Pertanto per aggiungere titoli ad una list box basta assegnare al rowSource della medesima l'intervallo contenente i soli dati con sopra le intestazioni. Excel assegna la prima riga ai titoli automaticamente. Ovviamente il tutto dopo aver messo a true il parametro header.

Vedi immagine

Qualora i dati da aggiungere fossero discontinui, popoli un array dove il "record 0" contiene i titoli e gli altri dati a seguire. Alla fine assegni alla list box tali valori ( es: UserForm1.ListBox1.List = myArray)

PS sono curioso: perchè sarebbe errato:

Set sh1 = Worksheets("Elenco Prezzi2")
e
Set sh2 = Worksheets("Sal")

???



[Modificato da dodo47 29/12/2019 17:43]
Domenico
Win 10 - Excel 2016
29/12/2019 19:51

Non sò cosa DirTi...(sul mio PC = debug)

Premesso che non mi piaciono le variabili "Rng/Rn1" (meglio For 4 to...End(xlUp).Row, solo nel caso in colonna A ci fosse un numero errato).

In Private Sub Workbook_Open()
SetFg
sh1.Activate
End Sub

A me davà errore quando arrivavo in "SetFg" (adesso non mi dà errore)
Public sh1 As Worksheet, sh2 As Worksheet, ecc ecc
Sub SetFg()
Set sh1 = ActiveWorkbook.Worksheets("Elenco Prezzi2")
Set sh2 = ActiveWorkbook.Worksheets("Sal")
End Sub' forse i Public non erano ancora attivati???

Per finire il MsgBox (ListBox1.listwrapper.GetSelected)

Ps ".RowSource = Range("A2:E7").Andress ... lo sapevo, non riesco con questi Link
(vedi bene 1° Link) che non capisco >>>'creo la riga descrizioni della ListBox
https://www.excelvba.it/Forum/story/Visual_Basic_for_Applications/Selezione_riga_da_listbox.html
opure http://ennius.altervista.org/vba/vba106.php

NB. NON usare Userfom2 (solo di prova)
Allego file dove trovo (se desidera, NON DUE CARATTERI consegutivi), mà due/tre caratteri distanzianti tra loro).
Alla fine l'utente (con 3 scelte) potrà ridimenzionare pure l'userfom

Ps. Naturalmente con tanti errori miei nel codice

... adesso scaricando il Mio allegato da errore in ...ActiveWorkbook.Worksheets("Elenco Prezzi2")
Forse il mio Excel(2013) 32bit non va bene in W10 64bit ??? (non sò cosa fare?)

Forse tutto da Workbook_Open(), sia quello di by sal che il mio funzionano ignorando l'errore (forse dipende dal fatto che non era salvato sul pc ???) Comunque solo all'apertura e poi nessun errore
[Modificato da ABCDEF@Excel 30/12/2019 09:46]
Post: 2.479
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
30/12/2019 10:55

ciao
non voglio entrare nel merito della discussione nè del lavoro in questione.

Ho solo suggerito il modo di creare dei "titoli" in una listBox.

Per il resto, con Sal (saluti) sei in ottime mani.

saluti



Domenico
Win 10 - Excel 2016
Post: 5.809
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
30/12/2019 17:22

Listbox
Ciao Domenico Buon Anno anche a te.

Io sto rispondendo al problema di Fabrizio con il testo lungo da poter visualizzare, ed ho fatto in modo da visualizzarlo in una textbox multiline, e credo che possa essere risolto in quel modo.

anche se ho qualche dubbio di come inserire il testo lungo nel foglio "SAL", forse con un "TestoaCapo", si potrebbe far inserire in automatico con il DoppioClick il numero dell'articolo cosi che viene completata la voce del Computo metrico

ora ABCDER@Excel non ho capito il suo problema se risponde anche lui a Fabrizio oppure ha problemi con la Listbox e vorrebbe chiarimenti.

il fatto di usare come ha scritto Rng/Rn1 2 Nomi al posto dell'indirizzo del range, oltre ad essere dinamici per future nuove voci, contengono anche i dati che devo trovare e scrivere sia nel listbox con la ricerca delle lettere inserite nel primo textbox che nel secondo textbox.

comunque cercherò di capire meglio quale sia il problema.

Ciao By Sal [SM=x423051]

e se non scrivo a tempo Auguri di Buon Anno [SM=x423025] [SM=x423025] [SM=x423025]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 2.480
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
30/12/2019 17:31

Buon Anno anche a te caro Salvatore.....😉






Domenico
Win 10 - Excel 2016
Post: 25
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
31/12/2019 10:56

[SM=x423025]
Siete tutti molto gentilissimi e bisognerebbe offrire caffe' e pasta a tutti per l'impegno veramente esemplare...

Sono rimasto stupito dalla evoluzione che ha preso la userform era proprio come la volevo!!!
[SM=x423028]

L'ultima modifica E' perfetta
l'ho provata e funziona bene e mi pare senza bug, gia' con la possibilita' di 1 ricerca per me sarebbe gia' sufficiente.
Sicuramente l'idea di avere 3 possibilita' di ricerca è molto interessante per completarla sarebbe il top se avesse la possibilita' di
avere tutte e 3 le texbox dinamiche come la prima...
Nella Userform , il pulsante "ok" schiacciato dovrebbe fare qualcosa??
Grazie per me gia' cosi' e tutto super risolto!
Grazie...
Post: 5.812
Registrato il: 14/11/2004
Utente Master
Office 2019
ONLINE
31/12/2019 11:20

Listbox
Ciao Fabrizio, io di ricerche ne vedo 1, le altre 2 quali sarebbero?.

sulla mia userform non ci sono pulsanti solo la "X" per chiuderla.

Comunque Buon Anno, Ciao By Sal [SM=x423051] [SM=x423025]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 26
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
31/12/2019 13:29

ciao by sal come riferimento intendevo questo file:
Post: 27
Registrato il: 04/03/2017
Città: MILANO
Età: 44
Utente Junior
2010
OFFLINE
31/12/2019 13:36

Scusate Non capisco cosa sbaglio , ho adattato la userform al mio file excel, e funziona tutto tranne che quando inserisco nella "texbox 1" qualcosa mi intercetta solo la seconda colonna di "elenco prezzi2" e non tutte e 5 le colonne come avviene nel file appena postato.
In pratica su 5 colonne del foglio "elenco prezzi2" la ricerca avviene solo nella seconda colonna"descrizione dei lavori".
Eppure ho inrito in Gestione nomi "voci" e "articoli".
sicurmente c'è qualcosa che sbaglio.
grazie
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 | 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 19:57. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com