Sviluppare funzionalita su Microsoft Office con VBA usare il range per selezionare un gruppo di celle attigue?

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

    tempusfugit
    Partecipante

      Buongiorno,

      è' possibile utilizzare la funzione range per selezionare delle determinate celle (esempio A2:A8)?

      se utilizzo l'istruzione: Range(col & 2).Select , mi legge tutta la colonna!

      Saluti.

      Sub trovaEcolora()
          On Error Resume Next
          inpt = InputBox("INSERIRE sezione")
          Range(col & 2).Select
          Cells.Find(What:=inpt, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
          False).Activate
          With Selection.Interior
              .PatternColorIndex = xlAutomatic
              .Color = 49407
              .TintAndShade = 0
              .PatternTintAndShade = 0
          End With
      End Sub
      #27600 Score: 0 | Risposta

      Marius44
      Moderatore
        52 pts

        Ciao

        La variabile col in questa riga Range(col & 2).Select da dove la desumi?

         

        Ciao,

        Mario

        #27601 Score: 0 | Risposta

        PMC77
        Partecipante
          18 pts

          Ciao @tempusfugit!

          Nel tuo caso dovresti mettere:

          Range(col & "2:"  & col & "8").Select

          per poter selezionare il range che hai indicato --> "esempio A2:A8"

          Paolo

          #27602 Score: 0 | Risposta

          tempusfugit
          Partecipante

            Ciao Karma,

            non funziona perchè credo tu abbia messo i due punti e le virgolette, comunque allego il file ora mi funziona in parte, ma non rispetta la mia selezione A4:A23, anzi, cerca in tutta la tabella e se non trova un valore mi colora tutta la tabella e non solo la cella ricercata.

            Saluti.

            `Sub trovaEcolora()
                On Error Resume Next
                inpt = InputBox("INSERIRE sezione")
                Range(col & 4 & col & 23).Select
                Cells.Find(What:=inpt, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                False).Activate
                With Selection.Interior
                     Range(col & 4 & col & 23).Select
                    .PatternColorIndex = xlAutomatic
                    .Color = 49407
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End Sub
            `
            Allegati:
            You must be logged in to view attached files.
            #27604 Score: 0 | Risposta

            PMC77
            Partecipante
              18 pts

              Scusami @tempusfugit

              ma la variabile "col" dove la dichiari e che cosa contiene (dove viene settata)?

              Grazie

              Paolo

              #27605 Score: 0 | Risposta

              Marius44
              Moderatore
                52 pts

                Ciao a tutti

                Ribadisco la mia domanda del post #27600

                 

                Aggiungo che, eventualmente, la riga di codice 

                Range(col & 4 & col & 23).Select

                dovrebbe essere

                Range(col & 4 & ":" & col & 23).Select

                ma ti seleziona da riga 4 a riga 23 di tutte le colonne!

                 

                Ciao,

                Mario

                #27606 Score: 0 | Risposta

                tempusfugit
                Partecipante

                  Scusami Mario,

                  ma non c'è un modo per selezionare solo il range A4:a23?

                  #27607 Score: 0 | Risposta

                  Marius44
                  Moderatore
                    52 pts

                    Ciao

                    Ma se vuoi SOLO questo perchè costruisci un intervallo con la variabile col? Penso possa bastare:

                    Range("A4:A23").Select

                     

                    Ciao,

                    Mario

                    #27608 Score: 0 | Risposta

                    tempusfugit
                    Partecipante

                      Ragazzi, mi spiegate perchè la mia ricerca va sempre fuori RANGE e mi evidenzia anche le celle oltre la A30?

                      Grazie.

                      Max

                      `Sub trovaEcolora()
                      
                          On Error Resume Next
                          'Dim COl
                          inpt = InputBox("INSERIRE sezione")
                          Set rng = Range("A4:A30")
                          'Range(COl & 4 & COl & 30).Select
                          'Range("A4").Select
                          Cells.Find(What:=inpt, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                          False).Activate
                          With Selection.Interior
                               Range("A").Select
                              .PatternColorIndex = xlAutomatic
                              .Color = 49407
                              .TintAndShade = 0
                              .PatternTintAndShade = 0
                              
                          End With
                          
                      End Sub
                      
                      
                      
                      
                      `
                      Allegati:
                      You must be logged in to view attached files.
                      #27614 Score: 1 | Risposta

                      Marius44
                      Moderatore
                        52 pts

                        Ciao

                        Non capisco perchè non rispondi alle domande. Ripeto: la variabile col quando è valorizzata?

                        Comunque, prova con questa macro:

                        Sub trovaEcolora_Due()
                        
                            On Error Resume Next
                            inpt = InputBox("INSERIRE sezione")
                            Set Rng = Range("A4:A30")
                            Rng.Interior.ColorIndex = xlNone
                            For Each c In Rng
                              If c.Value = inpt Then
                                c.Interior.ColorIndex = 3
                              End If
                            Next
                            
                        End Sub

                        Fai sapere. Ciao,

                        Mario

                        #27615 Score: 0 | Risposta

                        tempusfugit
                        Partecipante

                          Grazie Mario,

                          sembra che funzioni, un ultima cosa quel istruzione devo utilizzare per non far essere la ricerca "case sensitive"?

                           

                          #27616 Score: 1 | Risposta

                          Marius44
                          Moderatore
                            52 pts

                            Ciao

                            Purchè i dati in col.A siano sempre in maiuscolo, puoi rendere maiuscolo il contenuto di inpt in questo modo:

                            If c.Value = UCase(inpt) Then

                            La Funzione UCase trasformerà in maiuscolo il valore di inpt

                            Ciao,

                            Mario

                            #27620 Score: 0 | Risposta

                            tempusfugit
                            Partecipante

                              Un ultima cosa Mario,

                              ho replicato il tuo set di istruzioni in una tabella con circa 5000 record nella colonna D, ma non mi funziona cioè non trova nulla, nè, con ( Set Rng = Range(D34:D5000"), nè con co n ( Columns("D:D").Select) come mai?

                               

                              #27622 Score: 0 | Risposta

                              Marius44
                              Moderatore
                                52 pts

                                Ciao

                                Se non trova nulla è perchè non c'è nulla di uguale (a volte basta uno spazio davanti o alla fine del dato).

                                 

                                Ciao,

                                Mario

                                #27626 Score: 0 | Risposta

                                tempusfugit
                                Partecipante

                                  Buongiorno Mario,

                                  ti volevo porre un quesito, ho creato una macro che mi fa la funzione ricerca con l'istruzione: Columns("D:D").Select, perchè se utilizzo la tua macro su questo foglio non mi funziona?

                                  Grazie per il tuo prezioso aiuto, in allegato il file di esempio.

                                  Massimiliano.

                                  Sub CERCA()
                                      On Error Resume Next
                                      inpt = InputBox("INSERISCI IL NUMERO DEL FIR DA CERCARE?")
                                      Columns("D:D").Select
                                      Cells.Find(What:=inpt, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                                      False).Activate
                                      
                                  End Sub
                                  
                                  
                                  
                                  #27628 Score: 0 | Risposta

                                  tempusfugit
                                  Partecipante

                                    Buongiorno Mario,

                                    ti volevo chiedere come mai ho creato due macro: una con le tue istruzioni e una con le mie, ora con la tua riesco a trovare e colorare ma devo utilizzare l'esatta corrispondenza della stringa esempio: (se scrivo FIR18569/18 mi trova la cella se scrivo solo 18569 no), mentre invece con la mia trova la celle anche se utilizzo parte del nome ricerca (esempio: 15569), ma non mi colora la cella una volta trovata, come posso fare per utilizzare parte della mia istruzione per trovare e parte della tua per colorare?

                                    Grazie per il tuo prezioso aiuto.

                                    Saluti.

                                    Massimiliano.

                                    `Sub CERCA()
                                    
                                       On Error Resume Next
                                       inpt = InputBox("INSERISCI IL NUMERO DEL FIR DA CERCARE?")
                                       Columns("B:B").Select
                                        Cells.Find(What:=inpt, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
                                        False).Activate
                                        
                                    End Sub
                                    
                                    ---------------------------------------------
                                    
                                    Sub trovaEcolora()
                                    
                                        On Error Resume Next
                                        inpt = InputBox("INSERIRE sezione")
                                        Set Rng = Range("B3:B1000")
                                        Rng.Interior.ColorIndex = xlNone
                                        For Each c In Rng
                                          If c.Value = inpt Then
                                            c.Interior.ColorIndex = 3
                                          End If
                                        Next
                                        
                                    End Sub
                                    `

                                     

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

                                    Marius44
                                    Moderatore
                                      52 pts

                                      Ciao

                                      La mia macro fa una ricerca "esatta" del valore inserito nella InputBox.

                                      Nella tua, a parte che seleziona la col.D e non la col.B, non c'è alcun codice per colorare la cella individuata.

                                      Comunque, sostituisci la mia macro con questa

                                      Sub trovaEcolora()
                                      
                                          On Error Resume Next
                                          inpt = InputBox("INSERIRE sezione")
                                          inpt = "*" & inpt
                                          ur = Cells(Rows.Count, 1).End(xlUp).Row
                                          Set Rng = Range("B3:B" & ur)
                                          Rng.Interior.ColorIndex = xlNone
                                          For Each c In Rng
                                            If c.Value Like inpt Then
                                              c.Interior.ColorIndex = 3
                                            End If
                                          Next
                                          
                                      End Sub

                                      Come puoi notare ho aggiunto la riga inpt = "*" & inpt in modo tale che la ricerca venga fatta secondo la somiglianza e non l'uguaglianza. Ovviamente ho sostituito l'uguale con like quando fa il raffronto, cioè questa riga diventa così: If c.Value like inpt

                                       

                                      Fai sapere. Ciao,

                                      Mario

                                       

                                      #27631 Score: 0 | Risposta

                                      tempusfugit
                                      Partecipante

                                        Grazie Mario,

                                        ho messo "risolto", anche se la ricerca funziona solo se il valore è uguale!

                                        Grazie per l'impegno.

                                        Saluti.

                                        Max

                                      Login Registrati
                                      Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
                                      Rispondi a: usare il range per selezionare un gruppo di celle attigue?
                                      Gli allegati sono permessi solo ad utenti REGISTRATI
                                      Le tue informazioni: