› Sviluppare funzionalita su Microsoft Office con VBA › usare il range per selezionare un gruppo di celle attigue?
-
AutoreArticoli
-
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
Ciao
La variabile col in questa riga Range(col & 2).Select da dove la desumi?
Ciao,
Mario
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
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.Scusami @tempusfugit,
ma la variabile "col" dove la dichiari e che cosa contiene (dove viene settata)?
Grazie
Paolo
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
Scusami Mario,
ma non c'è un modo per selezionare solo il range A4:a23?
Ciao
Ma se vuoi SOLO questo perchè costruisci un intervallo con la variabile col? Penso possa bastare:
Range("A4:A23").Select
Ciao,
Mario
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.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
Grazie Mario,
sembra che funzioni, un ultima cosa quel istruzione devo utilizzare per non far essere la ricerca "case sensitive"?
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?
Ciao
Se non trova nulla è perchè non c'è nulla di uguale (a volte basta uno spazio davanti o alla fine del dato).
Ciao,
Mario
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
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.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
Grazie Mario,
ho messo "risolto", anche se la ricerca funziona solo se il valore è uguale!
Grazie per l'impegno.
Saluti.
Max
-
AutoreArticoli