
現在,VBAにてシートの比較プログラムを行っておりますが,その中で検索範囲を示すRangeに名前を使用したいのですがエラーでうまくいきません。
エラーは
「実行時エラー:1004
WorksheetFunctionクラスのMatchプロパティが取得できません」
とでます。
記述は
Application.WorksheetFunction.Match(Cells(r, 132), Range("リース型具Key1"), 0)
としており,”リース型具Key1”が事前に名前登録してある名前です。
方法をご存知の方,よろしくお願いします。
No.3ベストアンサー
- 回答日時:
シートが異なるとは思ってもいませんでした。
例えば、Cells(r, 132) が Sheet2 にあれば、下記のようにすればいいはずです。
シートを指定していなければ、マクロを実行したシートのCells(r, 132)になっているはずです。
Application.WorksheetFunction.Match(Worksheets("Sheet2").Cells(r, 132), Range("リース型具Key1"), 0)
それから、Match関数で結果が求まる場合は問題ありませんが、結果が求まらない場合の処理も考慮すべきでしょう。下記は参考例です。
Sub myTest01()
Dim shtNo As Integer
shtNo = 2
Dim ws2 As Worksheet
Dim ws3 As Worksheet
Set ws2 = Worksheets("Sheet" & shtNo)
Set ws3 = Worksheets("Sheet3")
On Error GoTo ErrorTrap
MsgBox Application.WorksheetFunction.Match(ws2.Cells(2, 2), _
ws3.Range("リース型具Key1"), 0)
'
'// 色々な処理 //
'
Set ws2 = Nothing
Set ws3 = Nothing
Exit Sub
ErrorTrap:
MsgBox ws2.Cells(2, 2) & "は見つかりません。"
Resume Next
End Sub
この回答への補足
nishi6さん,さっそく有難う御座います。
ご指摘の方法で試しました。うーん,うまくいきません。
Match(ws3.Cells(2,2),ws3.Range("リース型具")・・のように名前が参照する範囲セルのシートと同様のシートのCellを指定するとOKですが,ws2.Cellsとしたら同様のエラーが発生します。仕様なのでしょうか。
ちなみに,アクティブシートをws2にしていることは関係ないでしょうか。
nishi6さん
どうやら私の理解不足で,On Errorを考慮していないとMATCHしなかったときにエラーになることが判りました。ご指摘のエラー文を入れたことでOKになりました。有難う御座いました。
No.2
- 回答日時:
Cells(r, 132)が『リース型具Key1』のどの列を見ているかが問題です。
『リース型具Key1』の一番左の列を見ているなら、
Application.WorksheetFunction・・・・・・ Range("リース型具Key1").Columns("A:A"), 0)
左から2列目を見ているなら、
Range("リース型具Key1").Columns("B:B")
とします。3列目以降も同様に指定します。
この回答への補足
ご回答有難う御座います。大変参考になり,さっそく試してみましたが,やはりエラーは解消されませんでした。いろいろ行ってみた結果,Cells(r,132)のシートと”リース型具Key1”を示す範囲のシートが異なる場合にNGとなります。Cells(r,132)を”リース型具Key1”が定義されている同一シートに変更するとOKでした。シート間での名前の参照はサポートされていないのでしょうか。
補足日時:2004/03/09 16:29No.1
- 回答日時:
Range("リース型具Key1") って、A1:B10 のように複数列になってませんか?そういう仕様なのかよくわかりませんが、A1:A10 のような1列のみに範囲だったら大丈夫ですが、複数列の範囲だとエラーになるようです。
(名前で参照するか "A1:A10" のような範囲指定で参照するかは関係ないようです。)お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) ExcelVBAで、型が一致しませんのエラーについて 3 2023/06/20 09:51
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) エクセル VBAの構文について 2 2023/02/10 18:26
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
このQ&Aを見た人はこんなQ&Aも見ています
-
matchプロパティを取得できません…と出ます。
PowerPoint(パワーポイント)
-
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
-
4
Application.Matchで特定行の検索
Visual Basic(VBA)
-
5
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
6
Excel マクロでShearePoint先のフォルダ指定
Excel(エクセル)
-
7
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
OLEDB.NETで接続できない
-
なぜこんな初歩的なVBAのIf文で...
-
VBAのコードがエラーになっ...
-
マクロについて教えてください...
-
VBAのエラー発生場所をメッセー...
-
Invalid procedure call or arg...
-
VB6.0 →VB2005 のアップグレー...
-
VB6+SQL サーバー 2000 で 実行...
-
マクロでのActiveSheet.Pasteで...
-
C++Builder 6 : TListView でエ...
-
なぜエラーになるのでしょうか...
-
vbaのエラーを修正するコード(...
-
Access2002 で Select Case文が...
-
VBAでピボットテーブルの作成(...
-
ExcelVBAで、ユーザー定義型は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
VB6+SQL サーバー 2000 で 実行...
-
エクセルエラー13型が一致しま...
-
VBS実行時エラー オブジェクト...
-
ADODB.Streamを使用してUTF-8を...
-
INSERT INTOステートメント構文...
-
VBAで、定数式が必要ですのエラ...
-
OLEDB.NETで接続できない
-
VBSで変数の宣言はできないので...
おすすめ情報