› Excel e gli applicativi Microsoft Office › Doppio click listbox
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
-
AutoreArticoli
-
Buona sera a tutti. Sto adattando un codice che tempo fa mi fu dato in qsto forum.Scusate l'ora ma ho un problema con il ripopolamento delle textbox. Mi spiego meglio, se clicco su una riga nella listbox le textbox si popolano ma non con i dati della riga di selezione e se successivamete clicco su un'altra riga della listbox i dati nelle textbox non cambiano. Come mai dove sbaglio. Premetto che lo stesso codice l'ho adattato anche su altre userform e li va tutto bene. Non capisco dove sbaglio su qsta userform. Qualcuno di voi può esser così gentile a darmi una mano. Sicuramete sarà una cavolaa. Ma non ne vengo a capo.Grazie allego il file per capire meglio il mio problema
Allegati:
You must be logged in to view attached files.Non vedo il tuo codice ma perché parli di doppio click?prova cosìPrivate Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)riga = ListBox1.ListIndexSet sh = Sheets("TABSUBAPP")no_ligne = riga + 2ordine1.Caption = sh.Cells(no_ligne, 1)Cantiere.Text = sh.Cells(no_ligne, 2)committente.Text = Cells(no_ligne, 3)Cod_Cantiere.Text = Cells(no_ligne, 4)Nomeimpresa = Cells(no_ligne, 5)ContrattoN = Cells(no_ligne, 6)'DataContr.Text = Cells(no_ligne , 7)Registrato.Text = Cells(no_ligne, 8)'indata.Text = Cells(no_ligne , 9)aln.Text = Cells(no_ligne, 10)P1.Text = Format(Cells(no_ligne, 11).Value, "€ #,##0.00")P2.Text = Format(Cells(no_ligne, 12).Value, "€ #,##0.00")P3.Text = Format(Cells(no_ligne, 13).Value, "€ #,##0.00")P4.Text = Format(Cells(no_ligne, 14).Value, "€ #,##0.00")PF.Text = Format(Cells(no_ligne, 15).Value, "€ #,##0.00")End SubBuon giorno PatelGrazie per la risposta è la soluzionePotresti gentilmente darmi un aiuto anche per il tasto modifica?E cioè una volta ripopolato le textbox con il doppio click voglio apportare delle modifiche e con il tasto modifica salvare i dati modificati sulla riga di competenza. Ho già provato a modificare ma mi modifica i dati ma va ad inserirli nella riga piu in altoSaluti e graziePatelho visto anche che se filtro e faccio la ricerca utilizzando la textbox1 e cioe la casella nel riquadro piu grigio e faccio doppio click le textbox non si popolano.prima era tutto collegato e cioe facevo doppio clik dalla listbox oppure filtravo i dati utilizzando la textbox , i dati comparivano nelle textbox di appartenenza , penso che va rivisto il codice di partenza per trovare dove sbagliavo, perche su quella base era tutto collegato anche il tasto modifica, ovvio che cosi come l'ho inviato il tasto modifica va ancora adattato alla mia esigenza,Nota lo stesso codice e adattato alle altre mie esigenze funzionava perfettamente, non capisco dove sbaglio su qsta nuova esigenzapuoi cercare dicapire dove sbaglio siul codice di partenza che ti ho inviato?grazie e scusa se son stato poco chiaro in partenza.il codice del tasto modifica e il seguente:Private Sub CommandButton5_Click()Dim no_ligne As IntegerSheets("TABSUBAPP").SelectFor x = 0 To ListBox1.ListCount - 1If ListBox1.Selected(x) = True Then' MsgBox ListBox1.List(x)GoTo cEnd IfNext xc:no_ligne = ListBox1.List(x) 'ComboBox2.ListIndex + 5Cells(no_ligne + 2, 1) = ordine1.CaptionCells(no_ligne + 2, 2) = Cantiere.ValueCells(no_ligne + 2, 3) = committente.ValueCells(no_ligne + 2, 4) = Cod_Cantiere.ValueCells(no_ligne + 2, 5) = Nomeimpresa.ValueCells(no_ligne + 2, 6) = ContrattoN.Value'Cells(no_ligne + 2, 7) = Descrizione.Value'Cells(no_ligne + 2, 8) = ComboBox4.Value'Cells(no_ligne + 2, 9) = Quantità.Value'Cells(no_ligne + 2, 10) = Quantità.Value'Cells(no_ligne + 2, 11) = Quantità.Value'Cells(no_ligne + 2, 12) = Quantità.Value' Cells(no_ligne + 2, 5) = CDbl(Replace(importo, "€ ", ""))CaricaDatiEnd Submodifica la line di codice come sottono_ligne = ListBox1.ListIndexQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )ciaoo Albatros grazie per il suggerimentoho modificato la linea di codice che mi hai suggerito.e funziona.ma il problema resta, e mi spiego,hai modo di visionare il file che ho allegato ora?allora spero di essere il più preciso e chiaro possibile;Se clicco sulla prima riga della listbox nelle textbox non mi compaiono i dati della linea selezionata ma la linea successiva,oppure se faccio una ricerca utilizzando la textbox1 (Filtra) e clicco sulla linea ricercata succede la stessa cosa e cioè le textbox non si popolano con i dati della linea selezionata.in pratica cosa mi occorre. faccio breve sunto.1)la listbox si deve popolare con i dati del foglio (TABSUBAPP) (e fin qui tutto ok)2) Se clicco su qualsiasi riga, le textbox si devono popolare con i dati selezionati ( qui invece succede che si popolano con i dati della riga successiva e non quella selezionata)3) oppure se filtro la listbox utilizzando la textBox1 (filtra) e ci clicco sopra, le textbox non si popolano con i dati selezionati, ma sua volta si popola con dati che vuole lui.4) Una volta selezionata la riga "come il punto 2 o punto 3 sopra citati " se apporto delle modifiche vorrei che con il tasto modifica i dati vengono salvati sulla riga di competenza apportando cosi le modifiche volute.Gentilmente puoi dare un occhio e farmi capire dove sbaglio? o mi suggerisci le modifiche?sicuramnte mi sto perdendo in un bicchier d'acquagrazieAllegati:
You must be logged in to view attached files.Ieri sera...., dopo non l'ho postato (comunque da provare, se ho capito)
Non dichiarare le variabili, Set sh e non usarlo, infine una riga rossa???
'Dim iRow As Integer
'iRow = riga + 3 che non c'entrano nulla nel VBA
no_ligne = riga - 1 che bastava riga = riga - 1Allegati:
You must be logged in to view attached files.ciao Raffaele Grazie per la risposta, funziona ma ora cosi come mi hai suggerito se filtro i dati utilizzando la textbox1 i campi non si popolanoprova a sostituire il codice con quello postato`Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) ordine1.Caption = Me.ListBox1.List(Me.ListBox1.ListIndex, 0) Cantiere.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 1) committente.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 2) Cod_Cantiere.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 3) Nomeimpresa = Me.ListBox1.List(Me.ListBox1.ListIndex, 4) ContrattoN = Me.ListBox1.List(Me.ListBox1.ListIndex, 5) 'DataContr.Text = Cells(no_ligne , 7) Registrato.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 6) 'indata.Text = Cells(no_ligne , 9) aln.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 7) P1.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 8) 'Format(Cells(no_ligne, 11).Value, "€ #,##0.00") P2.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 9) 'Format(Cells(no_ligne, 12).Value, "€ #,##0.00") P3.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 10) 'Format(Cells(no_ligne, 13).Value, "€ #,##0.00") P4.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 11) 'Format(Cells(no_ligne, 14).Value, "€ #,##0.00") PF.Text = Me.ListBox1.List(Me.ListBox1.ListIndex, 12) 'Format(Cells(no_ligne, 15).Value, "€ #,##0.00") 'Next End Sub`Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )ciao Albatroscontinuo ad avere problemi con il tasto modifica,e cioè finche faccio doppio click sulla listbox per popolare le textbox tutto ok, apporto modifiche e tutto funziona come volevoma se uso la textbox1 (filtra) per ricercare il dato desiderato e faccio ripopolare le textbox facendo doppio click poi apporto modifiche e per salvare le modifche clicco sul tasto modifica, le modifiche apportate non vanno sulla riga prestabilita ma i dati vanno sulla riga 2qsta cosa oggi mi sta facendo ammattire, anche perche su un altra userform mi funzione perfettamente cosi come ho postato il primo File allegato alla discussione.salutispero che si riesce a trovare una soluzione altrimenti cambio metodo con ricerca da Combobox ,Una domanda è come un bacio. Uno tira l'altro...
Non sò cosa scrivi in Sub TextBox1_Change, comunque interviene subito al primo carattere. Forse è meglio che metti il codice Private Sub FiltraLista() in Sub TextBox1_Changema se uso la textbox1 (filtra) per ricercare il dato desiderato e faccio ripopolare le textbox facendo doppio click poi apporto modifiche e per salvare le modifche clicco sul tasto modifica, le modifiche apportate non vanno sulla riga prestabilita ma i dati vanno sulla riga 2seguendo questo procedimento, non avrai ami la modifica che tu apporti , nel record del foglio di Excel, perchè filtrando la listbox1, tu vari gli indici,a questo punto , quando tu inizializzi la listbox1 i record sono caricati seguendo il database ,quindi se tu inserisci i campi nelle tue textbox clicckando su di un recor è apporti le modifiche, queste vengono salvate(con opportuno codice)= nel foglio di excel, pero se tu effettui una selezione con la textbox1, i record, che vengono caricati sulla listbox1, non corrisponderanno mai agli indici dei recor caricati quando attivi la listbox1.Domanda:come faccio a dirgli a Excel di andare a pescare il record che ho modificato dalla selezione?Spero tanto di essere smentito.Comunque, fossi in te i record li modifcherei non dalla selezione, ma dall'inizializzazione della listbox1Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciaoo Albatros ho letto solo ora la tua risposta, anche xché non sono più ripassato dal forum. Cmq ho risolto prendendo in esame un altro foglio che avevo creato tempo fa sempre con il vostro aiuto. E non ricordo precisamente chi mi aveva fornito la soluzione. Ma devo dire che ho scolto. E se filtro i dati dalla textbox1(filtra) poi faccio ripopolare le textbox con il doppio click, effettuo le modifiche e salvo i dati sostituendo con i dati modificati.Cmq grazie mille per la pazienza e l'aiuto che mi avete dato e le soluzioni che mi avete suggeritoCiaoo Dodi, se hai risolto, posta la soluzione, in modo che possiamo condividerla, anche con altri utentiQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Ciao Albatros non appena ho un Po di tempo lo posto. Anche xché devo estrapolare solo il codice inerente all'argomento che avevo postatoSalve Albatroscome promesso allego la soluzione di come ho risolto il problema che avevo posto giorni fa,faccio notare che ho allegato il codice adattato alla mia esigenza e il file che avevo precedentemente allegato non va preso piu in cosiderazione visto che ha subito successive modifiche in base alla mia esigenza.ma son sicuro che voi del forum sapete interpretare il codice che ho appena allegato, senza aver il file di esempio.Cordiali saluti a tutti voi, sempre molto gentili e collaborativi.'Option ExplicitOption Compare TextDim aList As VariantPrivate Sub ContrattoN_Change()ContrattoN.BackColor = &HFFFF80End Sub'********************************************'inserimento automatico di ordine di riga (1)'********************************************Private Sub UserForm_Initialize()Sheets("TABSUBAPP").SelectRange("A2").SelectWhile ActiveCell <> ""If ActiveCell <> "N° ord" Then'ordine.Text = Activecell.Offset(0, 0).Value + 1ordine1.Caption = ActiveCell.Offset(0, 0).Value + 1Else'ordine: Text = 1End IfActiveCell.Offset(1, 0).ActivateWendCaricaDatiaList = Me.ListBox1.ListEnd SubPrivate Sub CaricaDati()Dim rDati As RangeWith Sheets("TABSUBAPP")Set rDati = .Range("A2:P" & .Cells(.Rows.Count, 3).End(xlUp).Row)End WithWith ListBox1.Clear.ColumnCount = 16.List = rDati.Value.ListIndex = .ListCount - 1End WithSet rDati = NothingEnd SubPrivate Sub FiltraLista()Dim i As LongMe.ListBox1.List = aListWith Me.ListBox1For i = .ListCount - 1 To 0 Step -1If (Me.TextBox1 <> "" And InStr(.List(i, 4), Me.TextBox1) <> 1) Or _(Me.TextBox3 <> "" And InStr(.List(i, 3), Me.TextBox1) <> 1) Or _(Me.TextBox2 <> "" And InStr(.List(i, 5), Me.TextBox2) <> 1) _Then.RemoveItem (i)End IfNext iEnd WithEnd SubPrivate Sub TextBox1_Change()FiltraListaEnd SubPrivate Sub TextBox2_Change()FiltraListaEnd SubPrivate Sub TextBox3_Change()FiltraListaEnd Sub'*********************************************'Inserimento dati in una tabella prestabilita''*********************************************Private Sub CommandButton3_Click()If Cod_Cantiere.Text = "" ThenMsgBox ("Campo Obbligatorio")Cod_Cantiere.SetFocusExit SubEnd IfDim RowCount As LongDim ctl As ControlDim new_can As String'write data to worksheetRowCount = Worksheets("TABSUBAPP").Range("A" & Rows.Count).End(xlUp).RowWith Worksheets("TABSUBAPP").Range("A1").Offset(RowCount, 0).Value = ordine1.Caption.Offset(RowCount, 1).Value = Cantiere.Value.Offset(RowCount, 2).Value = committente.Value.Offset(RowCount, 3).Value = Cod_Cantiere.Value.Offset(RowCount, 4).Value = Nomeimpresa.Value.Offset(RowCount, 5).Value = ContrattoN.Value.Offset(RowCount, 6).Value = CDate(DataContr.Value).Offset(RowCount, 7).Value = Registrato.Value.Offset(RowCount, 8).Value = CDate(indata.Value).Offset(RowCount, 9).Value = aln.ValueOn Error Resume Next.Offset(RowCount, 10) = CDbl(Replace(P1, "€ ", "")).Offset(RowCount, 11) = CDbl(Replace(P2, "€ ", "")).Offset(RowCount, 12) = CDbl(Replace(P3, "€ ", "")).Offset(RowCount, 13) = CDbl(Replace(P4, "€ ", "")).Offset(RowCount, 14) = CDbl(Replace(PF, "€ ", ""))On Error GoTo 0End Withnew_can = Cod_Cantiere.Value'********************************************************'Cancellazione tutti i dati dalle ComBox-TextBox-ChecKBox'********************************************************For Each ctl In Me.ControlsIf TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Thenctl.Value = ""ElseIf TypeName(ctl) = "CheckBox" Thenctl.Value = FalseEnd IfNext ctlCaricaDatiEnd SubPrivate Sub CommandButton5_Click()Dim no_ligne As IntegerSheets("ElencoPrezzi").SelectFor x = 0 To ListBox1.ListCount - 1If ListBox1.Selected(x) = True Then' MsgBox ListBox1.List(x)GoTo cEnd IfNext xc:no_ligne = ListBox1.ListIndex 'ComboBox2.ListIndex + 5Cells(no_ligne + 2, 1) = ordine1.CaptionCells(no_ligne + 2, 2) = Articolo.ValueCells(no_ligne + 2, 4) = ComboBox3.ValueCells(no_ligne + 2, 5) = importo.ValueCells(no_ligne + 2, 5) = CDbl(Replace(importo, "€ ", ""))Cells(no_ligne + 2, 6) = ComboBox2.ValueCells(no_ligne + 2, 3) = Descrizione.ValueCells(no_ligne + 2, 7) = ComboBox4.ValueCells(no_ligne + 2, 8) = Quantità.ValueCaricaDatiEnd SubPrivate Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)'--------------------------------------------------riga = ListBox1.ListIndexSet sh = Sheets("TABSUBAPP")Sheets("TABSUBAPP").ActivateFor x = 0 To ListBox1.ListCount - 1If ListBox1.Selected(x) = True Then'MsgBox ListBox1.List(x)GoTo cEnd IfNext xc:Dim iRow As IntegeriRow = riga + 3 '< ===============CAMBIARE PER DEFINIRE RIGA DI RIFERIMENTO DOVE INIZIANO I DATIno_ligne = ListBox1.ListIndexordine1.Caption = sh.Cells(no_ligne + 2, 1)Cantiere.Text = sh.Cells(no_ligne + 2, 2)committente.Text = Cells(no_ligne + 2, 3)Cod_Cantiere.Text = Cells(no_ligne + 2, 4)Nomeimpresa.Text = Cells(no_ligne + 2, 5)ContrattoN.Text = Cells(no_ligne + 2, 6)DataContr.Text = Cells(no_ligne + 2, 7)Registrato.Text = Cells(no_ligne + 2, 8)indata.Text = Cells(no_ligne + 2, 9)aln.Text = Cells(no_ligne + 2, 10)'a9.Text = Cells(no_ligne + 2, 11)'a10.Text = Cells(no_ligne + 2, 12)'a11.Text = Cells(no_ligne + 2, 13)'a12.Text = Cells(no_ligne + 2, 14)'a12 = Format(a12, "€ #,##0.00")'a6 = Format(a6, "€ #,##0.00")'a11 = Format(a11, "€ #,##0.00")End Sub
Autore
Articoli
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
