我无法将范围的全名转移到函数中。
我有2张:WS1和WS2。
在Sub中,我找到了与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?
答案 0 :(得分:1)
这是因为VBA以与excel不同的方式处理对单元格的引用。
您可以使用
找到范围的坐标range.address
和单元格所属的工作表
range.parent.name。
答案 1 :(得分:0)
非常感谢Darren
"'" & amountrange.Parent.name & "'!" & amountrange.Address
是我需要的答案。
我现在在用:
amountRange.Address(External:=True)