Sviluppare funzionalita su Microsoft Office con VBA Ordinamento Automatico Righe

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

    FROST220684
    Partecipante

      Ciao a tutti, ho un problema che non riesco a risolvere. Attraverso un userform inserisco dei dati sotto forma di riga ed ogni qualvolta viene inserita una nuova riga avviene un riordinamento della numerazione delle righe in quanto queste vengono ordinate per data. Ora quando io inserisco una nuova riga a seconda della data che metto l'userform mi inserisce la riga nel posto giusto (ordinata per data) e mi riordina la numerazione delle righe (di fianco alla data c'è una colonna di numerazione righe). Ma se io elimino una riga che non mi serve più chiaramente mi salta la numerazione righe e vorrei utilizzare lo stesso codice per riordinare di nuovo le righe anche se non c'è un nuovo inserimento. Il codice che viene utilizzato per riordinare tutte le righe è questo:

      Private Sub sorting(Sh As Worksheet, Optional SortByMultipleColumns As Boolean = False)
      'opera il sorting del foglio specificato nel range definito da A3
      Dim r As Range
      Dim i As Integer
      Dim is_first As Boolean
      
          Set r = Sh.Range("A3").CurrentRegion
          i = r.Rows.Count
          is_first = (i = 2)
          Set r = r.Offset(1)
          r(1) = 1
          
          If Not is_first Then
              Set r = Sh.Range("A3").CurrentRegion
              If Not SortByMultipleColumns Then
                  r.Sort key1:=r.Columns(2), Order1:=xlAscending, Header:=xlYes
              Else
                  r.Sort key1:=r.Columns(2), Order1:=xlAscending, key2:=r.Columns(3), order2:=xlAscending, Header:=xlYes
              End If
              Set r = r.Offset(1).Resize(r.Rows.Count - 1, 1)
              r(1) = 1
              r(1).AutoFill r, xlFillSeries
          End If
          
      End Sub

      Vorrei farlo funzionare al passaggio tra fogli come succede per 

      Private Sub Workbook_SheetActivate(ByVal Sh As Object)

      come posso fare? Grazie a tutti

      Allego file da visionare

      Allegati:
      You must be logged in to view attached files.
      #44696 Score: 0 | Risposta

      alexps81
      Moderatore
        58 pts

        In questo codice vedo la mano di V_F... può essere?  

        Cmq da quel poco che son riuscito a vedere sembra che in realtà non deve avvenire un ordinamento di tutta la tabella del foglio passato in rassegna, ma basta riordinare solo i numeri. Cioè se tu hai 20 record e cancelli il rigo corrispondente al record nr. 10, in realtà i record prima e dopo il numero 10 già sono ordinati. Perciò tu vorresti solo che si riformassero i numeri dall'1 fino all'ultimo record...che in questo caso sarà il 19.

        Ma tu come elimini il rigo? Lo fai manualmente o tramite una Routine? Nel senso che se lo fai tramite routine allora basta richiamate l'ordinamento dei numeri dopo la cancellazione e basta...e non tutte le volte che passi da un foglio all'altro allora parte l'ordinamento.

        #44698 Score: 0 | Risposta

        FROST220684
        Partecipante

          V_F è stato la mia luce    nel senso che io ho dato le idee conoscendo il mio lavoro e lui mi ha dato le possibilità aiutandomi passo passo passo passo anche molto più di un passo.    facciamo anche 5   

          Ora la elimino in modo manuale, ma in realtà era previsto che tramite le listview prelevavo la riga d'interesse e con un tasto nell'userform eliminavo la riga richiamando appunto il sorting(), ma non siamo riusciti ad implementarlo ma se mi dai una mano lo si fa. Cmq a parte gli scherzi si va bene quello che mi hai detto:

          alexps81 ha scritto:

          Perciò tu vorresti solo che si riformassero i numeri dall'1 fino all'ultimo record...che in questo caso sarà il 19.

          Come ti dicevo in alternativa se riesci ad inserire un tasto elimina riga su un userform:

          dovrebbe funzionare cosi: 1. Faccio una ricerca tramite userform, mi da risultati in listview, doppio clic sulla riga d'interesse, sub elimina riga con relativo riordinamento.

          Ad ogni modo vorrei comunque capire come attivare questo riordinamento anche in maniera normale quindi azionando una macro nel passaggio tra fogli oppure cliccando su bottone.

          #44699 Score: 0 | Risposta

          alexps81
          Moderatore
            58 pts

            FROST220684 ha scritto:

            V_F è stato la mia luce

            Ti posso comprendere...lo è tutt'ora anche la mia   

            Cmq andiamo per gradi...non è sempre facile comprendere (per me intendo...sia chiaro ehh ) il codice di V_F.

            Ti giro uno sviluppo che ho apportato. Vediamo se abbiamo centrato l'obiettivo. Prova ad entrare in uno dei vari fogli e apri la UserForm di quel Foglio attraverso il button dedicato. Troverai un nuovo button nella Form...si chiama ELIMINA RECORD.

            Seleziona un record che t'interessa eliminare. Doppio click nella ListView e poi click su ELIMINA RECORD. Ti chiede se vuoi veramente eliminare il record selezionato oppure no. Se fai si...quel record viene eliminato nel foglio, poi viene rimosso dalla ListView, le TextBox vengono svuotate ed infine si riapplica un ordinamento dei numeri da 1 fino all'ultimo record rimasto.

            Vedi che per fare delle prove ho cancellato alcuni record.

            Allegati:
            You must be logged in to view attached files.
            #44701 Score: 0 | Risposta

            FROST220684
            Partecipante

              alexps81 ha scritto:

              Ti posso comprendere...lo è tutt'ora anche la mia   

              beh senza di lui, intanto questo progetto non sarebbe mai nato ma soprattutto a me che sono un profano di vba mi ha aperto gli occhi sulle enormi possibilità che ci sono e mi ha dato sicuramente uno slancio in più, gli sono estremamente grato.

              Allora secondo me abbiamo fatto centro, nel senso che mi sembra funzioni tutto

              un problema l'ho trovato ma probabilmente è dovuto alla particolarità dell'userform del foglio transfer se elimino una riga dal foglio transfer, va tutto a buon fine nel senso che la riga viene eliminata e riordinato il foglio, però va in debug qui:

              Public Sub Pulisci_TextBox_e_ListView(frm As Object)
              Dim i As Integer
              
              With frm
                  For i = .ListView1.ListItems.Count To 1 Step -1
                      If .ListView1.ListItems(i).Selected = True Then
                          .ListView1.ListItems.Remove (i)
                      End If
                  Next i
                  
                  For i = 1 To active_table(frm).Columns.Count - 1
                      frm.Controls("Textbox" & i) = ""     'VA IN DEBUG QUI
                  Next
              
              End With
              
              End Sub

              effettivamente viene cancellata la riga dalla listview ma forse va in debug perchè in realtà quella riga è collegata ad un altro record (ti ricordo che nel foglio transfer inserisco dati e creo due righe andata e ritorno con lo stesso inserimento, non vorrei quindi fosse questo che lo fa andare in debug. altra cosa che succede quando nel foglio transfer prelevo i dati dalla listview sia se è una andata sia che sia un ritorno mi popola solo la textbox ritorno (invece se io clicco sull'andata mi dovrebbe popolare la textbox di andata mentre se clicco sul ritorno mi dovrebbe popolare la textbox di ritorno, ti ho fatto un piccolo video per questo

              Altra cosa ti chiedo è possibile riadattare il codice per utilizzarlo in maniera manuale, nel senso qualora dovessi eliminare manualmente una riga e volessi riordinare subito il foglio senza un nuovo inserimento e/o eliminazione, mi farebbe comodo avere una macro a parte.

              Grazie mille dell'aiuto finito questo il progetto dovrebbe essere completo

              Allegati:
              You must be logged in to view attached files.
              #44718 Score: 0 | Risposta

              alexps81
              Moderatore
                58 pts

                FROST220684 ha scritto:

                altra cosa che succede quando nel foglio transfer prelevo i dati dalla listview sia se è una andata sia che sia un ritorno mi popola solo la textbox ritorno (invece se io clicco sull'andata mi dovrebbe popolare la textbox di andata mentre se clicco sul ritorno mi dovrebbe popolare la textbox di ritorno

                Questo succede perché nel Private Sub ListView1_DblClick() c'è una parte di codice che verifica se la colonna dedicata all'orario di arrivo sia valorizzata o meno (cioè se è presento o no un'orario di arrivo):

                    For i = 1 To r.Columns.Count - 1
                        If i = 1 Then
                            If f.Cells(, 7) <> "" Then
                                'assume che sia un'andata (è indicato l'arrivo)
                                TextBox1 = f.Offset(, 1)
                                TextBox2 = ""
                            Else
                                'altrimenti è un ritorno (è indicata la partenza)
                                TextBox1 = ""
                                TextBox2 = f.Offset(, 1)
                            End If
                        Else
                            Controls("Textbox" & i + 1) = f.Offset(, i)
                        End If
                    Next

                se non è indicato un'orario allora la TextBox1 diventa vuota e viene valorizzata laTextBox2. Prova a mettere gli orari di Arrivo e Partenza e vedi che funziona.

                 

                Per quanto riguarda il debug quando elimini i record nel foglio Transfer...succede(va) perché le due TextBox che si riferiscono a DataAndata e DataRitorno erano nominate TextBoxA e TextBoxB. Ora io ho utilizzato un ciclo For...Next per azzerare tutte le TextBox presenti nelle varie UserForm. Ma solo nella UserForm dei Transfer queste due TextBox finiscono con A e B, tutte le altre sono numerate in sequenza a partire dal numero 1. Per risolvere questo problema le ho rinominate anche queste TextBox1 e TextBox2, così da far funzionare il Ciclo For...Next, ovviamente ho modificato tutte le parti di codice dove erano indicate come TextBoxA e TextBoxB (spero comunque di non avere creato problemi altrove con questa modifica ) .

                 

                Prova a vedere se funziona l'ordinamento manuale della tabella del Foglio Attivo. In ogni Foglio c'è un pulsante che richiama la Sub sorting. Se cancelli un rigo e premi il pulsante si ordina la tabella per data e rimette i numeri dall'1 fino all'ultimo.

                Cmq il progetto non è grandissimo ma è un po' complesso quindi mi aspetto problemi altrove visto che ho dovuto metterci le mani su alcune Sub. Speriamo che giri tutto nel verso giusto.

                Allegati:
                You must be logged in to view attached files.
                #44729 Score: 0 | Risposta

                FROST220684
                Partecipante

                  alexps81 ha scritto:

                  se non è indicato un'orario allora la TextBox1 diventa vuota e viene valorizzata laTextBox2. Prova a mettere gli orari di Arrivo e Partenza e vedi che funziona.

                  Ciao alex, questa è una bella rogna che non avevo proprio visto e che crea un po di problemi al concetto di ricerca, ti spiego meglio:

                  Spesso quando i transfer vengono inseriti non hanno orari perchè i clienti li comunicano dopo, quindi viene prima inserita la prenotazione senza orari per poi essere aggiornata la riga. Questo fa si però che quando io mi vado a ricercare la riga interessata mi popola le textbox sbagliate....mmmm non saprei proprio come risolvere sinceramente.

                  alexps81 ha scritto:

                  FROST220684 ha scritto:

                  altra cosa che succede quando nel foglio transfer prelevo i dati dalla listview sia se è una andata sia che sia un ritorno mi popola solo la textbox ritorno (invece se io clicco sull'andata mi dovrebbe popolare la textbox di andata mentre se clicco sul ritorno mi dovrebbe popolare la textbox di ritorno

                  mmm....sinceramente ho visto un po di problemucci sul form stampa non vorrei creare problemi che avevo già aggiustato, con franchezza fra poco dovrò iniziare la stagione ed il file mi serve operativo. Tagliamo la testa al toro, essendo il tasto elimina riga una chicca che però è tralasciabile lo lascio in tutti  i form che funziona bene e lo elimino dal form transfer, facciamo che le righe le elimino manualmente e che effettuo solo il riordinamento (che ho visto che funziona).

                  Ti mando un file aggiornato che mi sa che non hai, lavora su questo dove ho fatto alcune modifiche. L'unica cosa che vorrei sistemare ma non so assolutamente come è il problema sulla ricerca nelle textbox sbagliate per via dell'orario. effettivamente VF ricordo che aveva messo questa cosa dell'orario per distinguere l'andata dal ritorno ma non mi ero accorto che nella ricerca mi portava i dati dell'andata nel ritorno, ma non saprei proprio come sistemarlo.

                  Grazie tante e scusa se ti faccio uscire pazzo

                  Allegati:
                  You must be logged in to view attached files.
                  #44751 Score: 0 | Risposta

                  alexps81
                  Moderatore
                    58 pts

                    Guarda proviamo così...sinceramente non conoscendo bene il gestionale non so se manipolando di qua e di la vado a guastare altri automatismi...cmq ti giro questa versione. Vedi se funziona come vorresti.

                    Allegati:
                    You must be logged in to view attached files.
                    #44755 Score: 0 | Risposta

                    FROST220684
                    Partecipante

                      niente ora praticamente se non ci sono orari nella riga non ti popola il campo data nè dell'andata e nè del ritorno   

                      invece come da codice se trova un orario di andata mi popola bene, se trova un orario di ritorno altrettanto.

                      Ho scoperto un altro problema provando sulla nuova textbox11 che ho inserito da poco (che nell'inserimento funziona correttamente) ma quando vado a prelevare ad esempio l'ultima riga dove avevo inserito note di ritorno mi popola cmq le note di andata (la cosa strana è che qui ci sono gli orari di ritorno   

                      ti faccio un video mi viene più facile 😉

                      Allegati:
                      You must be logged in to view attached files.
                      #44759 Score: 0 | Risposta

                      alexps81
                      Moderatore
                        58 pts

                        Ahhh si si, ho capito. Si ho sbagliato è vero. Però effettivamente non credo sia possibile risolvere questo problema con la tabella così com'è. Cerco di spiegarmi meglio: se io ho la data 19/03/2024 e poi tutti i dati del cliente ma non ho nulla che faccia riferimento se è un arrivo o una partenza, come faccio a far capire al codice che quando faccio doppio click sulla ListView allora deve andare a mettere quella data nella TextBox dell'arrivo piuttosto che in quella della partenza? Ora 2 sono le cose...o metti una colonna in più e dividi la data di arrivo e la data di partenza oppure metti l'orario di arrivo e orario di partenza. Un punto di appoggio ci vuole altrimenti come si fa ad indirizzare il contenuto delle varie celle nelle textbox giuste?

                        Poi la TextBox11 che hai creato...mi sembra ovvio che non posso mai funzionare. Tu nella tabella dove riversi i dati hai 10 colonne e nell'ultima ci metti dentro sia le note di andata che di ritorno. Ora quando vai ad richiamare nelle varie textbox i dati facendo doppioclick sulla ListView, fai partire un ciclo che va da 1 al numero di colonne della tabella...che è appunto 10. Quindi va a popolare (TextBoxA e TextBoxB le salta perché c'è un'altra codifica) la TextBox3, TextBox4, TextBox5....TextBox10...ma non la TextBox11 perché il ciclo è terminato a 10

                        Adesso ragiono a voce alta...quindi andrebbero fatte delle prove...forse sarebbe il caso di aggiungere una colonna dove all'interno della cella corrispondente al cliente, ci va scritto "ANDATA" o "RITORNO". Così quando nella ListView hai lo stesso cliente ma con due date, potrai riconoscere se quel record è riferito all'ANDATA o al RITORNO.

                        Magari così si risolve anche il problema delle date.

                        #44760 Score: 0 | Risposta

                        FROST220684
                        Partecipante

                          Quello che però non capisco è: non si può collegare il doppio click all'inserimento originale? Spiego meglio quando io compilo un transfer andrò a compilare una data di andata e una data di ritorno non può fare riferimento a questo? E cioè al fatto che il dato in origine è stato messo la? Cmq secondo me una colonna aggiuntiva con A ed R forse si potrebbe fare per distinguere. 

                          Non c'è modo di aggiustare quella textbox11?

                          Domani mi faccio un po' di modifiche strutturali e ti mando un file per capire se è aggiustabile.

                          Grazie mille 

                          #44785 Score: 0 | Risposta

                          FROST220684
                          Partecipante

                            Ciao Alex, Buongiorno

                            allora il file l'ho modificato, cosa ho fatto:

                            1. ho inserito una nuova colonna dove ci vanno la lettere A se andata e la lettera R se ritorno

                            2. Ho inserito nell'userform due textbox autocompilate e non editabili vicino le date con A e R

                            3 ho modificato il codice Inserisci Riga e sembra funzionare SOLO CHE NON SO PERCHE' DOPO L'INSERIMENTO E' SPARITA LA COLONNA NOTE  e si sfasa mezzo mondo , sicuramente avrò settato qualcosa di sbagliato 

                            Cosa andrebbe fatto in piu:

                            1. vanno sicuramente rivisti i seguenti codici che non sono riuscito a capire:

                            Private Sub ListView1_DblClick()

                            Private Sub btnSave_Click()

                            Private Sub btnSearch_Click()

                            2. Andrebbe a questo punto ancorato al discorso di Andata e ritorno le due nuove textbox, mi spiego meglio: ora lui riconosce andata in base alla textboxA e ritorno in base alla textboxB. Tecnicamente adesso dovrebbe riconoscerle in base ad A e R.

                            Quindi se cerchiamo e preleviamo una riga se compilato con A mi compila la textbox data andata e note andata, se compilata con R mi compila data ritorno e note ritorno.

                            3. Sicuramente penso che ci siano ripercussioni probabilmente sul codice degli userform Stampa ed Invia Email rispetto ai cambiamenti essendo collegati

                             

                            Ti invio un file con le modifiche che ho apportato ed un file originale dove queste modifiche non ci sono

                            Spero sia tutto chiaro se hai bisogno scrivi quando vuoi

                            Allegati:
                            You must be logged in to view attached files.
                            #44793 Score: 0 | Risposta

                            alexps81
                            Moderatore
                              58 pts

                              Ciao, allora ho visto che hai caricato nuovi allegati, ma nel frattempo stavo lavorando sul file caricato ieri. Ho trovato questa soluzione. Te la giro, fammi sapere se può andar bene. Tieni presente una cosa: ho notato che hai una funzione che va nascondere il record se ha una data inferiore a quella odierna. Non so perché vuoi questo...forse per ragioni visive...visto che sono data ormai passate, probabilmente non le tratti più...cmq il punto è che se provi a fare una ricerca di un nominativo che è su un rigo nascosto allora ti genera un errore. Per ora mi sono limitato a gestire l'eventuale errore che si genera, evitando così che il gestionale va in bug.

                              Non ho letto il tuo messaggio pubblicato subito prima di quest'ultimo mio...vedi prima se il mio file allegato ti può piacere.

                              Allegati:
                              You must be logged in to view attached files.
                              #44804 Score: 0 | Risposta

                              FROST220684
                              Partecipante

                                Ciao Alex,

                                No purtroppo ci sono parecchie cose che non vanno, ti ho fatto un video con audio per farti vedere meglio

                                Allegati:
                                You must be logged in to view attached files.
                                #44809 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  alexps81 ha scritto:

                                  FROST220684 ha scritto:

                                  V_F è stato la mia luce

                                  Ti posso comprendere...lo è tutt'ora anche la mia   

                                  #44810 Score: 0 | Risposta

                                  vecchio frac
                                  Senior Moderator
                                    272 pts

                                    FROST220684 ha scritto:

                                    ti ho fatto un video con audio per farti vedere meglio

                                    Ho visto il video, ho letto i vostri messaggi, vediamo cosa posso fare per aiutare, certamente non posso lasciare le cose in sospeso (purtroppo non ho nemmeno tempo di respirare)

                                    #44812 Score: 0 | Risposta

                                    FROST220684
                                    Partecipante

                                      ogni aiuto è ben accetto io e alex abbiamo fatto un bel lavoro, certo io mi arrendo ad un certo punto, Alex è più esperto e perseverante. Grazie VF

                                      #44813 Score: 0 | Risposta

                                      alexps81
                                      Moderatore
                                        58 pts

                                        Per quanto riguarda la prima parte del tuo video, hai questo problema perché, come ti dicevo ieri, abbiamo bisogno di un dato su cui appoggiarci per determinare se è un Arrivo o un Ritorno. Per questo è stata creata la colonna A/R.

                                        Come puoi notare, finché interroghi i record dove in fondo alla ListView sono presenti o la A (arrivo) o la R (ritorno)...tutto funziona. Se invece mancano non funziona più. Tutto quello che devi fare ora è inserire una A o una R nell'ultima colonna sul foglio relativo al record ovviamente. In realtà questa operazione lo fa direttamente il codice quando inserisci un nuovo record o modifichi uno esistente. Tu non lo vedi ma nel codice c'è una parte in cui lui al record destinato all'andata mette una A mentre a quello destinato al rientro mette una R.

                                        Per il discorso dell'errore che ti genera invece, come ti dicevo, è legato al fatto che tu hai una function che va a nascondere i record pregressi. Quando provi ad effettuare una ricerca, se in questa ricerca c'è un record nascosto allora lui non lo trova e genera l'errore (ma che ho gestito facendo in modo che non ti faccia crollare il sistema). Cmq ho aggiunto del codice alla function che va a determinare la tabella passata in rassegna, in modo che se ci sono righe nascoste lui le va a scoprire. Poi quando chiudi la userform lui le va a nascondere di nuovo. Ovviamente poi nella ListView ti ritrovi anche quei record che erano inizialmente nascosti.

                                        Per ora ho risolto così...però vediamo se V_F risolve diversamente. 

                                        Allegati:
                                        You must be logged in to view attached files.
                                        #44818 Score: 0 | Risposta

                                        FROST220684
                                        Partecipante

                                          Allora mi dava un errore di debug appena facevo un ricerca ed ho modificato questo vedi se secondo te va bene (ma funziona quindi immagino di si):

                                          `Public Function active_table(frm As Object) As Range
                                          
                                          Dim uRow As Long
                                          Dim i As Variant (MANCAVA QUESTO)
                                          
                                              Set active_table = Worksheets(frm.Caption).Range("A3").CurrentRegion
                                              uRow = active_table.Rows.Count
                                              
                                              For i = 3 To uRow
                                                  If Cells(i, 1).EntireRow.Hidden = True Then
                                                      Cells(i, 1).EntireRow.Hidden = False
                                                  End If
                                              Next i
                                          End Function</code></pre><p>poi non so perchè nell'userform INVIO EMAIL si era cancellata proprio una parte di codice che formattava in data numeri dek ììl tipo 2006 (in 20/06/2024) - ho risolto anche questa copiando il codice che c'era per l'altra textbox (che funzionava):</p><pre class="language-c"><code>Private Sub TextBoxA_AfterUpdate()
                                          'formatta la data inserita nella textboxB come gg/mm/aaaa
                                          'controlla che la data sia valida
                                          
                                              Call form_tbdate_afterupdate(Me, TextBoxA)
                                          End Sub`

                                           

                                          Detto questo faccio delle prove intensive ma per me il problema sembra risolto risoluto ed efficace    e naturalmente grazie dell'impegno. 

                                          Rimangono solo due cose:

                                          1. Il tasto elimina riga (che effettivamente funziona ma va in debug non so perchè)

                                          2. Va bene la soluzione del far vedere le righe nascoste e nasconderle nuovamente quando chiudo userform, ma ricordo vagamente che VF mi parlava di poterle colorare tipo grigio scuro se fosse possibile sarebbe una buona cosa.

                                          Grazie mille Alex, ti allego il mio file con le modifiche che ho fatto

                                          Allegati:
                                          You must be logged in to view attached files.
                                          #44821 Score: 0 | Risposta

                                          alexps81
                                          Moderatore
                                            58 pts

                                            Ehhh...ora sono con lo smartphone... appena posso controllo. Strano che si è cancellata la variabile i.

                                            Cmq per ora posso dirti che la variabile i la devi dichiarare Long e non Variant

                                            #44822 Score: 0 | Risposta

                                            FROST220684
                                            Partecipante

                                              alexps81 ha scritto:

                                              Cmq per ora posso dirti che la variabile i la devi dichiarare Long e non Variant

                                              ahahhahah ignorante che sono!!!

                                               

                                              Tranquillo guarda con calma comunque la soluzione sembra ottima se aggiustiamo queste 2 cose rimanenti dovrebbe essere tutto ok

                                              #44830 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                Quote Frost: "sembra funzionare quasi tutto, tranne il tasto elimina riga che in realtà funziona ma va in debug"

                                                La Sub Pulisci_TextBox_e_ListView nel Modulo2 (di cui non riconosco il formato... probabilmente l'ha aggiunta Alex) esegue questo ciclo:

                                                For i = 1 To active_table(frm).Columns.Count - 1
                                                    frm.Controls("Textbox" & i) = ""
                                                Next

                                                pero' le textbox nel form non partono da 1 (le due textbox di andata e ritorno si chiamano TextBoxA e TextBoxB, mentre le successive partono da TextBox3). La soluzione quindi e' a portata di mano.

                                                Quote Frost: "potevi far colorare le righe nascoste di grigio nella listview"

                                                Qui e' un po' piu' da vedere con calma ma sempre nel Modulo2, la sub che riempie la listview e' naturalmente la populate_listview: qui dentro se f.EntireRow.hidden e' True allora basta ciclare per ogni subitem della listview e cambiare l'attributo ForeColor del ListSubItem. 

                                                #44831 Score: 0 | Risposta

                                                FROST220684
                                                Partecipante

                                                  alexps81 ha scritto:

                                                  Cmq per ora posso dirti che la variabile i la devi dichiarare Long e non Variant

                                                  ok cambiata: 

                                                  Public Function active_table(frm As Object) As Range
                                                  
                                                  Dim uRow As Long
                                                  Dim i As Long
                                                  
                                                      Set active_table = Worksheets(frm.Caption).Range("A3").CurrentRegion
                                                      uRow = active_table.Rows.Count
                                                      
                                                      For i = 3 To uRow
                                                          If Cells(i, 1).EntireRow.Hidden = True Then
                                                              Cells(i, 1).EntireRow.Hidden = False
                                                          End If
                                                      Next i
                                                  End Function

                                                  vecchio frac ha scritto:

                                                  La soluzione quindi e' a portata di mano.

                                                  ok risolto:

                                                  For i = 3 To active_table(frm).Columns.Count - 1
                                                          frm.Controls("Textbox" & i) = ""
                                                      Next
                                                  frm.Controls("TextboxA") = ""
                                                  frm.Controls("TextboxB") = ""
                                                  End With

                                                  vecchio frac ha scritto:

                                                  Qui e' un po' piu' da vedere con calma ma sempre nel Modulo2, la sub che riempie la listview e' naturalmente la populate_listview: qui dentro se f.EntireRow.hidden e' True allora basta ciclare per ogni subitem della listview e cambiare l'attributo ForeColor del ListSubItem. 

                                                  In realtà e si vede che ricordavo bene guardando il codice questa cosa c'è già però non funziona pare:

                                                  If f.EntireRow.Hidden Then co = 8421504 Else co = vbBlack     'grigio per le righe nascoste
                                                          LI.ForeColor = co

                                                   

                                                  Allego file aggiornato

                                                  Allegati:
                                                  You must be logged in to view attached files.
                                                  #44835 Score: 0 | Risposta

                                                  vecchio frac
                                                  Senior Moderator
                                                    272 pts

                                                    LI.Forecolor funziona ma soltanto per la prima colonna. Le successive colonne sono suoi Subitems che espongono del testo nei rispettivi ListSubitems. Percio' bisogna ciclare da 1 a tot Subitems e impostare per ognuno il forecolor a "co". Sembra macchinoso e lo e' , pero' funziona cosi' 🙂

                                                    #44836 Score: 0 | Risposta

                                                    FROST220684
                                                    Partecipante

                                                      ecco qui ammetto di non averci capito nulla   

                                                      ma sicuramente alex sarà più acuto di me

                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 1 a 25 (di 77 totali)
                                                    Rispondi a: Ordinamento Automatico Righe
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: