Excel e gli applicativi Microsoft Office Doppio click listbox

Login Registrati
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
  • Autore
    Articoli
  • #3552 Score: 0 | Risposta

    Dodi
    Partecipante
      2 pts
      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.
      #3567 Score: 0 | Risposta

      oregon
         Non vedo il tuo codice ma perché parli di doppio click? 
        #3568 Score: 0 | Risposta

        patel
        Moderatore
          51 pts
          prova così
          Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
          riga = ListBox1.ListIndex
          Set sh = Sheets("TABSUBAPP")
          no_ligne = riga + 2
          ordine1.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 Sub

          #3572 Score: 0 | Risposta

          Dodi
          Partecipante
            2 pts
            Buon giorno Patel
            Grazie per la risposta è la soluzione 
            Potresti 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 alto 
             
            Saluti e grazie 
            #3574 Score: 0 | Risposta

            Dodi
            Partecipante
              2 pts
              Patel
              ho 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 esigenza
              puoi cercare dicapire dove sbaglio siul codice di partenza che ti ho inviato? 
               
              grazie e scusa se son stato poco chiaro in partenza.
              #3575 Score: 0 | Risposta

              Dodi
              Partecipante
                2 pts
                il codice del tasto modifica e il seguente:
                 
                 
                Private Sub CommandButton5_Click()
                Dim no_ligne As Integer
                Sheets("TABSUBAPP").Select
                 For x = 0 To ListBox1.ListCount - 1
                      
                      If ListBox1.Selected(x) = True Then
                        ' MsgBox ListBox1.List(x)
                         GoTo c
                      End If
                  
                   Next x
                c:
                no_ligne = ListBox1.List(x)   'ComboBox2.ListIndex + 5
                    Cells(no_ligne + 2, 1) = ordine1.Caption
                    Cells(no_ligne + 2, 2) = Cantiere.Value
                    Cells(no_ligne + 2, 3) = committente.Value
                    Cells(no_ligne + 2, 4) = Cod_Cantiere.Value
                    Cells(no_ligne + 2, 5) = Nomeimpresa.Value
                    Cells(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, "€ ", ""))
                CaricaDati
                 
                 
                End Sub
                #3576 Score: 0 | Risposta

                albatros54
                Moderatore
                  89 pts
                  modifica la line di codice come sotto 
                  no_ligne = ListBox1.ListIndex
                   
                  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 )
                  #3580 Score: 0 | Risposta

                  Dodi
                  Partecipante
                    2 pts
                    ciaoo Albatros grazie per il suggerimento
                    ho 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'acqua
                    grazie 
                    Allegati:
                    You must be logged in to view attached files.
                    #3582 Score: 0 | Risposta

                    Raffaele53
                    Partecipante
                      23 pts
                      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 - 1
                      Allegati:
                      You must be logged in to view attached files.
                      #3584 Score: 0 | Risposta

                      Dodi
                      Partecipante
                        2 pts
                        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 popolano 
                        #3589 Score: 0 | Risposta

                        albatros54
                        Moderatore
                          89 pts
                          prova 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 )
                          #3591 Score: 0 | Risposta

                          Dodi
                          Partecipante
                            2 pts
                            ciao Albatros 
                            continuo 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 volevo 
                            ma 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 2 
                             
                            qsta 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.
                             
                            saluti
                             
                            spero che si riesce  a trovare una soluzione altrimenti cambio metodo con ricerca da Combobox , 
                            #3593 Score: 0 | Risposta

                            Raffaele53
                            Partecipante
                              23 pts
                              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_Change
                              #3602 Score: 0 | Risposta

                              albatros54
                              Moderatore
                                89 pts
                                ma 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 2
                                seguendo 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 listbox1
                                 
                                 
                                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 )
                                #3632 Score: 0 | Risposta

                                Dodi
                                Partecipante
                                  2 pts
                                  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 suggerito 
                                  #3633 Score: 0 | Risposta

                                  albatros54
                                  Moderatore
                                    89 pts
                                    Ciaoo Dodi, se hai risolto, posta la soluzione, in modo che possiamo condividerla, anche con altri utenti
                                     
                                     
                                    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 )
                                    #3668 Score: 0 | Risposta

                                    Dodi
                                    Partecipante
                                      2 pts
                                      Ciao Albatros non appena ho un Po di tempo lo posto. Anche xché devo estrapolare solo il codice inerente all'argomento che avevo postato 
                                      #3737 Score: 0 | Risposta

                                      Dodi
                                      Partecipante
                                        2 pts
                                        Salve Albatros 
                                        come 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 Explicit
                                        Option Compare Text
                                        Dim aList As Variant
                                         
                                         
                                        Private Sub ContrattoN_Change()
                                        ContrattoN.BackColor = &HFFFF80
                                        End Sub
                                        '********************************************
                                        'inserimento automatico di ordine di riga (1)
                                        '********************************************
                                         
                                        Private Sub UserForm_Initialize()
                                         
                                        Sheets("TABSUBAPP").Select
                                        Range("A2").Select
                                        While ActiveCell <> ""
                                        If ActiveCell <> "N° ord" Then
                                        'ordine.Text = Activecell.Offset(0, 0).Value + 1
                                        ordine1.Caption = ActiveCell.Offset(0, 0).Value + 1
                                         
                                        Else
                                        'ordine: Text = 1
                                        End If
                                        ActiveCell.Offset(1, 0).Activate
                                        Wend
                                         
                                         CaricaDati
                                         
                                         aList = Me.ListBox1.List
                                        End Sub
                                         
                                        Private Sub CaricaDati()
                                        Dim rDati As Range
                                            With Sheets("TABSUBAPP")
                                                Set rDati = .Range("A2:P" & .Cells(.Rows.Count, 3).End(xlUp).Row)
                                            End With
                                            With ListBox1
                                                .Clear
                                                .ColumnCount = 16
                                                .List = rDati.Value
                                                .ListIndex = .ListCount - 1
                                            End With
                                            Set rDati = Nothing
                                        End Sub
                                         
                                        Private Sub FiltraLista()
                                        Dim i As Long
                                            Me.ListBox1.List = aList
                                            With Me.ListBox1
                                                For i = .ListCount - 1 To 0 Step -1
                                                     If (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 If
                                                Next i
                                            End With
                                        End Sub
                                         
                                        Private Sub TextBox1_Change()
                                        FiltraLista
                                        End Sub
                                         
                                        Private Sub TextBox2_Change()
                                        FiltraLista
                                        End Sub
                                         
                                        Private Sub TextBox3_Change()
                                        FiltraLista
                                        End Sub
                                         
                                         
                                        '*********************************************
                                        'Inserimento dati in una tabella prestabilita'
                                        '*********************************************
                                        Private Sub CommandButton3_Click()
                                         
                                        If Cod_Cantiere.Text = "" Then
                                            MsgBox ("Campo Obbligatorio")
                                            Cod_Cantiere.SetFocus
                                        Exit Sub
                                        End If
                                         
                                        Dim RowCount As Long
                                        Dim ctl As Control
                                        Dim new_can As String
                                        'write data to worksheet
                                        RowCount = Worksheets("TABSUBAPP").Range("A" & Rows.Count).End(xlUp).Row
                                        With 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.Value
                                            On 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 0
                                        End With
                                         
                                        new_can = Cod_Cantiere.Value
                                         
                                         
                                        '********************************************************
                                        'Cancellazione tutti i dati dalle ComBox-TextBox-ChecKBox
                                        '********************************************************
                                        For Each ctl In Me.Controls
                                            If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
                                                ctl.Value = ""
                                            ElseIf TypeName(ctl) = "CheckBox" Then
                                            ctl.Value = False
                                        End If
                                        Next ctl
                                         
                                        CaricaDati
                                         
                                        End Sub
                                         
                                         
                                        Private Sub CommandButton5_Click()
                                         
                                        Dim no_ligne As Integer
                                        Sheets("ElencoPrezzi").Select
                                         For x = 0 To ListBox1.ListCount - 1
                                              If ListBox1.Selected(x) = True Then
                                                ' MsgBox ListBox1.List(x)
                                                 GoTo c
                                              End If
                                           Next x
                                        c:
                                        no_ligne = ListBox1.ListIndex   'ComboBox2.ListIndex + 5
                                            Cells(no_ligne + 2, 1) = ordine1.Caption
                                            Cells(no_ligne + 2, 2) = Articolo.Value
                                            Cells(no_ligne + 2, 4) = ComboBox3.Value
                                            Cells(no_ligne + 2, 5) = importo.Value
                                            Cells(no_ligne + 2, 5) = CDbl(Replace(importo, "€ ", ""))
                                            Cells(no_ligne + 2, 6) = ComboBox2.Value
                                            Cells(no_ligne + 2, 3) = Descrizione.Value
                                            Cells(no_ligne + 2, 7) = ComboBox4.Value
                                            Cells(no_ligne + 2, 8) = Quantità.Value
                                         
                                        CaricaDati
                                         
                                            End Sub
                                         
                                        Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
                                        '--------------------------------------------------
                                        riga = ListBox1.ListIndex
                                        Set sh = Sheets("TABSUBAPP")
                                        Sheets("TABSUBAPP").Activate
                                         For x = 0 To ListBox1.ListCount - 1
                                              If ListBox1.Selected(x) = True Then
                                                 'MsgBox ListBox1.List(x)
                                                 GoTo c
                                              End If
                                           Next x
                                        c:
                                        Dim iRow As Integer
                                        iRow = riga + 3  '< ===============CAMBIARE PER DEFINIRE RIGA DI RIFERIMENTO DOVE INIZIANO I DATI
                                        no_ligne = ListBox1.ListIndex
                                        ordine1.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
                                      Login Registrati
                                      Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
                                      Rispondi a: Doppio click listbox
                                      Gli allegati sono permessi solo ad utenti REGISTRATI
                                      Le tue informazioni: