
No.4ベストアンサー
- 回答日時:
補足。
VLookupでエラー値が返る時の分岐について
Sub WorksheetFunctionとの違い()
Dim x As Variant
x = Application.VLookup(1, [{1,2}], 2, 0)
Debug.Print x
x = Application.WorksheetFunction.VLookup(1, [{1,2}], 2, 0)
Debug.Print x
x = Application.VLookup(2, [{1,2}], 2, 0)
Debug.Print x
x = Application.WorksheetFunction.VLookup(2, [{1,2}], 2, 0) 'エラー
End Sub
Sub なのでエラー分岐方法が分かれる()
Dim x As Variant
x = Application.VLookup(2, [{1,2}], 2, 0)
If IsError(x) Then MsgBox "error"
x = Empty
On Error Resume Next
x = WorksheetFunction.VLookup(2, [{1,2}], 2, 0)
On Error GoTo 0
If IsEmpty(x) Then MsgBox "error"
End Sub
No.5
- 回答日時:
こんばんは。
一応、私個人は、Application.VLookup という、Excel97 の書き方はしません。
別に、それで特別、根拠があるわけではないのですが、古い書き方は、なるべく避けています。変数のデータ型が雑なような気がしてくるからです。
Sub TestMarcoFormula()
Dim Kazu As String '←Variant でもよい。
'しかし、数値型は、0も値だからダメです。
Dim SearchWd As Variant '←Longでもよい。
SearchWd = 20061201 '←なるべく、数式には直接入れない
Kazu = "" '一旦、長さ0の文字列を入れます。Variant型は、Empty値。
On Error Resume Next
Kazu = WorksheetFunction.VLookup(SearchWd, Range("範囲"), 2, True)
On Error GoTo 0
If Kazu <> "" Then '変数が更新されたか調べる
'Variant型は、IsEmpty()
MsgBox Kazu
End If
End Sub
なお、「エラー2042」は、"#N/A" というエラー値です。
それから、Range("範囲") たぶん、名前登録だと思いますが、不安定になりがちですから、VBAの中で定義したほうがよいです。
Const 範囲 As String = "Sheet1!A1:B20"
として、
Kazu = WorksheetFunction.VLookup(SearchWd, Range(範囲), 2, True) '""を取る
No.3
- 回答日時:
(1)#1のご指摘が可能性が一番高いと思います。
(2)そのほかに、TRUE型でよいですか。ぴったりの値を探すのはFALSE型ですが。該当する値の範囲をさがすのが、TRUE型ですが?
(3)「範囲」の左端列と、第1引数の
”20061201"の数値か文字列かが合っていますか。
質問の例で下は20061201と数値、上は文字列になってます。
実態はどうなってますか。
(4))「範囲」の左端列と関数の第1引数が前後や途中スペースや半角・全角を含めて、思わぬ不統一がありませんか。
>Excel2003ではVLookup
まず変化はないでしょう。先日もバージョンのせいを疑った質問がありましたが、この習慣はよくないと思います。
基礎的な事項は97あたりから変わっていません。変わっている点も
有るので、むつかしいのでしょうが。
No.2
- 回答日時:
こんにちは。
XL2003でも Application.VLookup は使えます。
>エラーが発生します
とは、エラーでコードが止まってしまうという意味ですね?
なんというエラーメッセージですか?
まず、確認すべき事2点あります。
1)KAZUという変数の型は何ですか?
Variant型でないと、Application.VLookupの結果が#N/Aを返す場合は、その答えを格納する事ができません。
2)そのコードは標準モジュールに書かれていますか?
それ以外、例えばシートモジュールなどに書かれている場合、
かつRange("範囲")が他シート範囲を名前定義している場合、Excel.Range("範囲")としなければいけません。
もし、エラー発生...というのが、変数KAZUにエラー値が格納されるという意味であれば、
計算結果が、一般関数でいうところの #N/A を返しているだけですので、検索値や範囲を再確認してみては。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAで教えてください。 Vlookupで、X X.value = applicatio 1 2022/12/26 13:40
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
fortran おそらく二重解法のエラー
-
マクロで"#N/A"のエラー行を削...
-
scilabについて
-
ShapeのVBAの中での取り扱い
-
C言語で質問です。
-
ADOの_com_errorをエラー内容別...
-
書き込めない文字はどうすれば...
-
pythonのコードエラーについて
-
ASPでエクセル書き込み
-
LaTeXのエラーについて(コンパ...
-
携帯動画変換君で着フルもどき作成
-
Matlabの実行エラーについて
-
VC++2010で作成中に特定のエラ...
-
エラーの種類
-
VBA エラーが出てしまいます。...
-
ネットワーク上のPCにアクセス...
-
verilog で「*」を使って2の補...
-
Excel2003でVLookupは使用でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロOn Error GoTo ErrLabel...
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
インポート時のエラー「データ...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
【Access】Excelインポート時に...
-
VBでSQL文のUPDATE構文を使った...
-
【VB.NET】 パワポ操作を非表示で
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
実行時エラー'-2147467259(8000...
おすすめ情報