범위의 전체 이름을 함수로 전송할 수 없습니다.VBA - 시트 범위를 함수로 전송
2 장이 있습니다. WS1과 WS2.
하위에서는 WS1 및 WS2와 관련된 다양한 범위를 찾습니다. 내가 디버깅 할 때 하지만, 자신의 좌표는 시트의 이름 앞에되지 않습니다
Public Function myFunction(ByRef amountRange As Range)
....
End Function
Sub Testons()
'
Dim nb As Integer, lastrow As Integer,
Dim WS1 As Worksheet, WS2 As Worksheet
With ThisWorkbook
Set WS1 = .Worksheets("WS1"): Set WS2 = .Worksheets("WS2")
End With
With Worksheets("WS1")
nb = .Range("A2", .Range("A2").End(xlDown)).Rows.Count
lastrow = nb + 1
Set amountRange = WS1.Range("C2:C" & lastrow)
'THIS RESULTS IN 'WS1'!$C$2:$C$9 AND NOT IN 'WS1'!$C$2:$C$9 (what I want)
End With
result = myFunction(amountRange)
End Sub
은 결과적으로 내 기능 내가 원하는 작업을 수행 할 수 없습니다. 'WS1'과 같이 워크 시트 이름 앞에 범위를 두는 방법! $ C $ 2 : $ C $ 9?
왜 필요합니까? 주소를 전달하지 않습니까? – SJR
당신이 뭘할지 분명치 않다. "WS1 '의 결과는 $ C $ 2 : $ C $ 9 그리고'WS1 '! $ C $ 2 : $ C $ 9 (내가 원하는 것)'- 둘 다 같은 결과입니다. 'Dim nb As Integer, lastrow As Integer' - 오버 플로우 오류를 일으키고 long으로 변경합니다. AmountRange는 WS1 시트에서 C2 : Cxxxx에 대한 참조를 보유합니다. 정확한 ** 문자열 **을 얻으려면' " '& amountrange.Parent.name &"'!를 사용하십시오. & amountrange.Address' –
'Testons()'에서 'amountRange'를 Range로 선언하고 있다고 가정합니까? Range 자체를 myFunction에 전달하고 있으므로, 거기에서 수행중인 작업을 살펴 봐야합니다. – CLR