2012-10-04 16 views
6

Credo che quello che sto cercando di fare sia piuttosto semplice. Voglio eseguire un'iterazione su un parametro Range e modificare il valore per ogni cella in quell'intervallo.VBA Excel: Iterazione del parametro dell'intervallo e modifica dei valori delle celle

Function test(thisRange As Range) 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Function 

Quanto sopra è un semplice esempio di ciò che voglio fare, ma non sembra funzionare. Quando eseguo il debug di questo, Excel sembra generare un errore quando raggiunge c.Value = 1. Perché non funziona?

+1

Funziona per me. Come lo chiami? Spero non da un foglio di lavoro come UDF? –

+0

Assicurati di dichiarare c come intervallo. – RBarryYoung

+0

È necessario ciclizzare ogni cella? Puoi usare 'thisRange.Value = 1' – user3357963

risposta

3

questo funziona per me

Option Explicit 

Sub Sample() 
    Dim ret 
    ret = test(Sheets("Sheet1").Range("A1:A15")) 
End Sub 

Function test(thisRange As Range) 
    Dim c As Range 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Function 

BTW non abbiamo bisogno di usare una funzione. Una funzione viene utilizzata per restituire un valore. Prova questo

Option Explicit 

Sub Sample() 
    test Sheets("Sheet1").Range("A1:A15") 
End Sub 

Sub test(thisRange As Range) 
    Dim c As Range 
    For Each c In thisRange.Cells 
     c.Value = 1 
    Next 
End Sub 
+0

Sì, questo funziona. Grazie ancora, stavo chiamando la funzione come UDF e quello era il mio problema. – stevebot

+0

Sì, come ho detto prima nel mio commento, non puoi usarlo come UDF :) –

Problemi correlati