2

WorksheetFunction.Match 関数を使用したいので、これに領域をロードする必要があります。

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

Countries 変数の作成を手伝ってもらえますか? 私は多くの方法(以下を含む)を試しましたが、どれもうまくいかないようです...

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

以下のコードを使用しましたが、問題なく動作します。Excel の起動時に読み込まれて非表示になっている PERSONAL.XLSB ファイルがありますか? エラーメッセージは何ですか - 下付き文字が範囲外ですか?

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 に答える
0

OK 問題は解決しました。デイブに感謝します。

私は実際に国が属する「地域」を返す関数としてそれを使用します:

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 に答える