将范围从不同的工作簿分配给variables

我想使用WorksheetFunction.Match函数,并需要加载一个区域。

Row = WorksheetFunction.Match(country, Countries, 0) 

你能帮我构build国家variables吗? 我尝试了很多方法(包括下面),但似乎没有工作…

 Countries = Workbooks("PERSONAL.XLSB").sheets("Sheet1").Range("B:B") Countries = Worksheets("PERSONAL.XLSB!Sheet1").Range("B:B") Countries = Worksheets.Range("PERSONAL.XLSB.Sheet1!B:B") ... 

我也尝试了一些上面的“设置”在前面,但是也没有帮助…

那么我使用下面的代码,它工作正常。 你有一个PERSONAL.XLSB文件,当你启动Excel时,它正在加载和隐藏? 什么是错误信息 – 是否超出范围?

 Public Sub test() Dim r As Integer Dim Countries As Range Dim Country As Range Set Countries = Workbooks("PERSONAL.XLSB").Worksheets("Sheet1").Range("C1:C8") Set Country = Workbooks("PERSONAL.XLSB").Worksheets("Sheet1").Range("A1") r = WorksheetFunction.Match(Country, Countries, 0) MsgBox (r) End Sub 

OK问题解决了,thanx Dave!

我实际上用它作为返回该国所属“区域”的函数:

 Function AreaEMEA(Country As String) Dim Countries As Range Dim Areas As Range Set Countries = Workbooks("PERSONAL.XLSB").Worksheets("Sheet1").Range("B:B") Set Areas = Workbooks("PERSONAL.XLSB").Worksheets("Sheet1").Range("A:A") Row = WorksheetFunction.Match(Country, Countries, 0) AreaEMEA = WorksheetFunction.Index(Areas, Row) End Function 

我打电话使用

 "=PERSONAL.XLSB!Module1.areaemea(A1)"