› Sviluppare funzionalita su Microsoft Office con VBA › Mancato prelevamento dati da ListView
-
AutoreArticoli
-
Ciao a tutti,
Spero come sempre possiate darmi una mano a mettere apposto alcune cose che non vanno sul file che vi allegherò. Vi racconto cosa fa il file:
1. è un compilatore con un pannello di controllo (tramite userform inserisce in ogni foglio dedicato le note che vado ad inserire creando nuove righe e ordinandole per data e numerazione riga - es. inserisco dei dati: lui crea una nuova riga la riposiziona in ordine di data (ogni riga come prima cella ha una data) ed in più effettua un ricalcolo per numerare le righe in ordine ad ogni nuovo inserimento.
è un file utilissimo che serve per inserire tante note ogni giorno e non fare il tipico taglia/incolla - inserisci riga etc (anche se può sembrare banale aiuta tantissimo nel mio lavoro)
Passiamo alle cose che non riesco a sistemare:
1. In ogni userform sono presenti delle listview che mi permettono tramite le textbox di effettuare delle ricerche nelle righe e visualizzare i risultati. Tramite le textbox se effettuo una ricerca i dati mi vengono presentati nella listview e fin qui tutto bene. Ma facendo un doppio clic sui risultati mi permette anche di prelevare i dati - immetterli nuovamente nelle textbox e se voglio modificare i dati ed anche fin qui tutto bene. Il problema deriva dall'ultimo risultato in listview:
Es. Apro un userform qualunque faccio una ricerca e mi restituisce 3 risultati. Riesco a prelevare i dati dalle prime due righe ma non dall'ultima e questo accade per tutti gli userform anche perche il codice è lo stesso (tranne per il foglio transfer che però anche se in maniera diversa dovrebbe mantenere lo stesso concetto) ed è questo:
Public Sub form_listview_dblclick(frm As Object) Dim i As Integer Dim f As Range Dim r As Range Dim LI As ListItem Set LI = frm.ListView1.SelectedItem If LI Is Nothing Then Exit Sub Set r = active_table(frm) Set r = r.Resize(r.Rows.Count - 1) Set f = r.Columns(1).Find(LI, LookIn:=xlValues, LookAt:=xlWhole) f.EntireRow.Select f.EntireRow.Hidden = False For i = 1 To r.Columns.Count - 1 frm.Controls("Textbox" & i) = f.Offset(, i) Next frm.TextBox1.Tag = 1 End SubCi tengo a precisare che tutto funziona molto bene ci sono solo queste piccole cose che non vanno e che vorrei sistemare per tutto il resto il funzionamento è perfetto e vorrei che rimanesse tale senza alterare il linguaggio presente.
Ci tengo a ringraziare Vecchio_frac che mi ha sopportato nella creazione di questo file è senza di lui non esisterebbe.
Allego un file di prova con alcuni dati già inseriti e per qualsiasi domanda sono sempre attivo e disponibile.
Inoltre penso che condividere questo file possa essere d'aiuto al forum (magari non ai più navigati) per vedere alcune cose ed imparare cose nuove.
Grazie a tutti per l'aiuto
Allegati:
You must be logged in to view attached files.a corredo di quanto scritto sopra invio un immagine dell'errore che viene fuori quando cerco di prelevare l'ultima riga della listview ed un immagine dove si vede il corretto prelevamento della prima riga come di tutte le altre tranne l'ultima
naturalmente preciso che essendo il codice comune a tutti gli userform il problema è presente su tutti gli userform
Allegati:
You must be logged in to view attached files.Non sono bravo, se ho capito il problema prova a togliere il -1
>>>Set r = r.Resize(r.Rows.Count -1)Ps. Dovresti eliminare gli oggetti prima d'uscire
Set r = Nothing
Set f = Nothing
Set LI = Nothing
End Subsembra funzionare vi aggiorno....grazie milleeeeeee
C'era un motivo se avevo resizato il range a una riga di meno e probabilmente era per evitare di acchiappare la riga di intestazione. Siccome e' passato un po' troppo tempo e non ricordo cosa avevo combinato, sono contento che ci sia chi concorre a risolvere i problemi di un progetto interessante, elaborato e non del tutto banale. Per me questo e' un periodo pesante in cui ho la testa su altri fronti e non riesco a essere ovunque.
Comunque appena riesco ci do un occhio volentieri...
Ciao Fra,
ci tengo a precisare come già 1000 volte ho detto che anche se per i più esperti possa sembrare qualcosa di non troppo complicato per me che ci lavoro è un progetto fantastico.
Detto questo, spezzo due lance:
1. Io ricordo (anche io un po vagamente essendo passato tempo) che tutto funzionava, poi quando ho ripreso il file è uscito questo errore ed anche io sinceramente avevo pensato che essendo che funzionava tutto era strano che adesso non funzionasse ma non vorrei sinceramente tra il milione di email che ci siamo scambiati abbia preso un file con una progettazione precedente alle finali.
2. Effettivamente la soluzione di Raffaele53 mi permette di prendere tutte le righe (almeno al momento con poche prove) e per ora non mi sembra che ci sia nessun problema con l'intestazione.
Mi farà molto piacere se anche tu gli darai un occhiata come tutti coloro che mi daranno una mano a completare questo bel progetto che vorrei far funzionare prima dell'estate ma questo dipende anche da me.
Grazie a tutti e vi aggiorno prima possibile e ribadisco il concetto che chi vuole può scaricare il file e prendere spunto per i propri progetti almeno a chi è un po più indietro come me.
-
AutoreArticoli
