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

LoginRegistrati
Stai vedendo 18 articoli - dal 1 a 18 (di 18 totali)
  • Autore
    Articoli
  • #27599 Risposta

    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 Risposta
    Marius44
    Marius44
    Moderatore
      28 pts

      Ciao

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

       

      Ciao,

      Mario

      #27601 Risposta
      PMC77
      PMC77
      Partecipante
        8 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 Risposta

        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 Risposta
        PMC77
        PMC77
        Partecipante
          8 pts

          Scusami @tempusfugit

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

          Grazie

          Paolo

          #27605 Risposta
          Marius44
          Marius44
          Moderatore
            28 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 Risposta

            Scusami Mario,

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

            #27607 Risposta
            Marius44
            Marius44
            Moderatore
              28 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 Risposta

              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 Risposta
              Marius44
              Marius44
              Moderatore
                28 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 Risposta

                Grazie Mario,

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

                 

                #27616 Risposta
                Marius44
                Marius44
                Moderatore
                  28 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 Risposta

                  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 Risposta
                  Marius44
                  Marius44
                  Moderatore
                    28 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 Risposta

                    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 Risposta

                    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 Risposta
                    Marius44
                    Marius44
                    Moderatore
                      28 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 Risposta

                      Grazie Mario,

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

                      Grazie per l'impegno.

                      Saluti.

                      Max

                    LoginRegistrati
                    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:



                    vecchio frac - 2750 risposte

                    albatros54
                    albatros54 - 1009 risposte

                    patel
                    patel - 976 risposte

                    Marius44
                    Marius44 - 839 risposte

                    Luca73
                    Luca73 - 717 risposte