2

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

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

你能帮我构建国家变量吗?我尝试了很多方法(包括以下方法),但似乎没有一个有效......

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")  ...

我还尝试了上述一些在前面加上“Set”的方法,但这也无济于事......

4

2 回答 2

0

好的问题解决了,谢谢戴夫!

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

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)"
于 2012-11-29T09:27:27.010 回答
0

好吧,我使用了下面的代码,它工作正常。您是否有一个 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
于 2012-11-28T16:51:56.957 回答