c27에서 각 셀에 함수 AddColumnofData를 실행하고 오른쪽에 인접하지 않은 모든 비어 있지 않은 셀을 실행해야하지만 "런타임 오류 424 개체 필요"가 발생합니다. 고맙습니다.셀 범위를 루핑
Set col = Range("$C$27", Range("$C$27").End(xlToRight))
For Each c In col
AddColumnofData (c)
Next c
c27에서 각 셀에 함수 AddColumnofData를 실행하고 오른쪽에 인접하지 않은 모든 비어 있지 않은 셀을 실행해야하지만 "런타임 오류 424 개체 필요"가 발생합니다. 고맙습니다.셀 범위를 루핑
Set col = Range("$C$27", Range("$C$27").End(xlToRight))
For Each c In col
AddColumnofData (c)
Next c
당신은 AddColumnofData
Sub AddColumnofData(c As Range)
...
End Sub
그것에 전화가
AddColumnofData c
할 필요가
DIM
에
제시의 조언 (즉, 괄호를 제거하다) 당신의 변수들, 반면에 manditory는 좋은 충고입니다. col
에도 적용됩니다. 모듈을 맨 위에 추가하려면 Option Explicit
을 모듈 상단에 추가하십시오.
또 다른 하위 코드 – JMax
당신이 C를 선언하면 :
Dim c as Range
그런 일을해야 무슨.
가정에함수에 전달하기 전에 범위 객체를 선언하거나 설정할 수 있습니다. 올바른 값을 함수에 전달하고 있음을 증명하려면이 값을 사용하십시오.
Dim r As Range '-- if you don't declare it as a range type you get a variant type as default
Dim c As Range '-- this is used to store the single cell in the For Each loop
Set r = Range("A1:D1") '-- substitute your range as per your example
For Each c In r '-- you could also use r.cells
MsgBox c.Value '-- pass to your function instead of a call to the Message Box
Next
이것은 현재 워크 시트의 D1에 세포 A1의 값을 포함하는 4 개 메시지 상자의 일련의 생산, 당신의 범위 "R"은 심각하게 큰 경우 다음 대신을 Debug.Print에 전달.
을 호출 할 때 괄호를 사용하거나 사용하지 않는 방법에 대해서는 [칩 피어슨의이 링크] (http://www.cpearson.com/excel/byrefbyval.aspx)를 참조하십시오. 호출하기 전에 개체를 선언하고 설정하는 이유는 무엇입니까? 함수? 장점은 범위의 셀에 대해 몇 가지 유효성 검사를 먼저 수행 할 수 있으며 셀 값 등을 연결할 수 있다는 것입니다. 범위가 아닌 문자열로 값을 전달할 수도 있습니다. 따라서 함수는 범위 객체 대신 문자열 함수를 처리 할 수 있습니다. – Eric
'AddColumnofData'는 무엇을합니까? 귀하의 기능 속도를 최적화 할 수 있습니까? – brettdj