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

Filtrare dati da ListBox e caricarli su TextBox

Ultimo Aggiornamento: 09/11/2023 20:34
Post: 101
Registrato il: 18/06/2010
Città: LUGO
Età: 70
Utente Junior
Excell 2016
OFFLINE
08/11/2023 23:45

Salve, ho un problema che non so risolvere:
Ho una tabella con 8 colonne e "n" righe popolate e tramite una ListBox riesco a filtrarne i dati.
Ora vorrei che selezionando una riga della ListBox mi estrapoli 4 (degli 8) valori e me li carichi su relativi TextBox.
...e qui viene il mio problema: Se visualizzo tutta la lista (*) e seleziono una qualsiasi riga, le TextBox mi si popolano regolarmente , mentre se faccio una ricerca filtrata i dati che mi vengono caricati sulle TextBox risultano sbagliati.
Grazie per eventuali consigli
Post: 7.415
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
09/11/2023 09:21

Ciao Roberto, sbagli riferimento, devi modificare la macro del DoppioClick, in quanto quando cerchi il ListIndex quello fa riferimento all'indice della listbox e non la riga del foglio, specialmente nella ricerca con filtro, in quanto i dati filtrati non necessariamente corrispondono alla riga del foglio.

a questo punto 2 possono essere le soluzioni,
la prima fare un ciclo che ricerca nel foglio l'applicazione e poi sapendo la riga del foglio ti estrae i dati,
la seconda più semplice, visto che hai già tutti i dati che ti interessano nella listbox, a questo punto riporti nelle celle i valori della listbox, ma attenzione i valori della listbox anche numerici o altro date, etc.. sono testo quindi quando vengono trasferiti sul foglio devono essere convertiti, ma tu li trasferisci in textbox quindi non sorge il problema.

questa la modifica dell'evento DoppioClick

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Riga = ListBox1.ListIndex
'MsgBox ("riga = " & Riga)
Sheets("Foglio1").Activate
Dim iRow As Integer
iRow = Riga
With ListBox1
  TextBox51.Text = .List(iRow, 1)
  TextBox52.Text = .List(iRow, 2)
  TextBox53.Text = .List(iRow, 3)
  TextBox54.Text = .List(iRow, 5)
End With
modifica = 1
End Sub


non ho toccato altro del tuo codice, allego il file

Ciao By Sal (8-D
[Modificato da by sal 09/11/2023 09:22]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 101
Registrato il: 18/06/2010
Città: LUGO
Età: 70
Utente Junior
Excell 2016
OFFLINE
09/11/2023 13:51

Ti ringrazio infinitamente By Sal ,così è perfetto ... e se per caso volessi anche selezionare la riga sul foglio ???
Post: 7.416
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
09/11/2023 15:54

Ciao ecco la nuova macro con le modifiche, come puoi vedere ho aggiunto delle variabili.

la prima cosa devo prendere il valore del ListIndex, dell'applicazione e metterlo in "d" ricorda che la listbox come indice parte da 0zero quindi 1 fa riferimento all'applicazione 2° campo
poi devo fare il ciclo di ricerca del nome dell'applicazione sul foglio1 scorrendo la colonna "C" una volta trovata la riga di corrispondenza la inserisco in "iRow" esco da for...next, e posso trasferire i dati dal foglio alle textbox

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim iRow As Integer
Dim x, d
Riga = ListBox1.ListIndex
d = ListBox1.List(Riga, 1)
'MsgBox ("riga = " & Riga)
Sheets("Foglio1").Activate
For x = 2 To Cells(Rows.Count, 3).End(xlUp).Row
  If Cells(x, 3) = d Then iRow = x: Exit For
Next x
TextBox51.Text = Cells(iRow, 3)
TextBox52.Text = Cells(iRow, 4)
TextBox53.Text = Cells(iRow, 5)
TextBox54.Text = Cells(iRow, 7)
modifica = 1
End Sub


spero che sia stato chiero nella spiegazione, Ciao By Sal (8-D
[Modificato da by sal 09/11/2023 15:54]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 102
Registrato il: 18/06/2010
Città: LUGO
Età: 70
Utente Junior
Excell 2016
OFFLINE
09/11/2023 17:55

Ciao By Sal, quello che intendevo io era che prima di traserire i dati dal foglio alle TextBox , mi lasciasse sul foglio la selezione della Riga interessata
(Row.Select).
Buona serata
Post: 7.417
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
09/11/2023 18:10

Ciao basta modificare la prima macro in questo modo, vedi le righe che ho aggiunte, fanno in modo che la riga che hai selezionato nella listbox sia selezionata anche nel Foglio1, ma attenzione ho preso come riferimento il campo "N°" non ho usato il ciclo For...Next per trovare la riga

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim r                               'aggiunte Variabile
Riga = ListBox1.ListIndex
'MsgBox ("riga = " & Riga)
Sheets("Foglio1").Activate
r = Val(ListBox1.List(Riga, 0)) + 1 'aggiunte prende il valore N°
Rows(r).Select                      'aggiunte seleziona la riga
Dim iRow As Integer
iRow = Riga
With ListBox1
  TextBox51.Text = .List(iRow, 1)
  TextBox52.Text = .List(iRow, 2)
  TextBox53.Text = .List(iRow, 3)
  TextBox54.Text = .List(iRow, 5)
End With
modifica = 1
End Sub 



Ciao By Sal (8-D
[Modificato da by sal 09/11/2023 18:11]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 103
Registrato il: 18/06/2010
Città: LUGO
Età: 70
Utente Junior
Excell 2016
OFFLINE
09/11/2023 20:34

Esattamente .... grazie mille By Sal
Hai RISOLTO il problema 👏👏
[Modificato da roberto pironi 09/11/2023 20:35]
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 10:58. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com