Vlookupのプロパティを取得できない

このQ&Aのポイント
  • 初心者です。WorksheetFunctionクラスのVlookupプロパティを取得できません。というデバッグについてです。
  • Range("B"&j)のところでエラーが出るようなのですが、今は問題なく参照して取得してくれます。
  • なぜこのような現象が起こるのか?また、起きないようにする対策を教えてください。
回答を見る
  • ベストアンサー

Vlookupのプロパティを取得できない

初心者です。 WorksheetFunctionクラスのVlookupプロパティを取得できません。というデバッグについてです。 初めに以下の構文を作成したときは問題なく動いたのですが突然エラーが出るようになりました。 そして、何度か同じことを繰り返したり、同じ構文を記述し直したりすると動くようになりました。 何も変えたところはないのですが、なぜこのような現象が起こるのか? また、起きないようにする対策を教えてください。 以下が問題の記述した構文です。 For j = 2 to Rowcnt1 Wk1.Range("C"&j).value=_ WorksheetFunction. _ Vlookup(Wk1.Range("B"&j),_ Wk2.Range("A1:T100"),14,False) です。 Range("B"&j)のところでエラーが出るようなのですが、今は問題なく参照して取得してくれます。 今日、何度も同じことが起きました。 回答宜しくお願い致しますm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

>WorksheetFunctionクラスのVlookupプロパティを取得できません。 というエラー表示が出たという事は、Wk1シートのB列の2行目~Rowcnt1行目のセル範囲の中に、Wk2シートのA1:A100のセル範囲の中には存在しない値が入力されているセルが存在していたか、或は、空欄のセルが存在していたからだと思われます。  要するに、Wk1.Range("B"&j)のセルに入力されていた値が間違っていたという事です。  ワークシート関数のVLOOKUP関数の場合なら#N/Aエラーとなる場合に相当します。

8312yuki
質問者

お礼

回答ありがとうございますm(_ _)m 回答者様の意見を参考によく考えてみたところ検索値に0があることが判明しました。検索範囲に0を追加するとエラーがなくなりました。 とても助かりました。 ありがとうございました。

関連するQ&A

  • VBA WorksheetFunction.VLookupとoffsetプロパティー

    エクセル2002使用です。 VBAの記述で、WorksheetFunction.VLookupを使って求めた値の入っているセルの列方向に一つ下の値を取得したいのですが・・・・ range("A1").Value =WorksheetFunction.VLookup( range("B1").Value, Range("A3:C10"), 3, 1) 例えば上記で得た値がC4セルにあるのであれば、C5セルの値を取得したいのです。 offset(0,1)プロパティーをどこにおけば良いのか良くわかりません。 どうかよろしくお願いします。

  • VLookupで一致しなかった時のVBAでの処理

    On Error ~を使わないで、 VLookup()で一致しなかった時の処理をさせたいのですが どのように記述すればよいでしょうか。 例えば、以下のようなコードの場合、 一致したデータがない時にyに-1を代入するには 以下のコードをどのように記述すればよいのでしょうか。 --------------------- Dim x As Integer Dim y As String x = 7 y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) --------------------- 以下はいずれもエラーになりますが、以下のような感じで処理がしたいです。 --------------------- If IsError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then  y = -1 Else  y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then  y = -1 Else  y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) End If --------------------- y = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False), -1) --------------------- なお、以下のように本来エラーではない処理で On Error Resume Nextを使うのは、 本当のエラーの処理と混同するため不可 --------------------- On Error Resume Next y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False) If Err <> 0 Then y = -1 On Error GoTo 0 ---------------------

  • VLOOKUP関数をエクセルVBAで使いたいのですが、

    VLOOKUP関数をエクセルVBAで使いたいのですが、 式が間違っているのかどうかは分かりませんが実行できませんでした。 式は以下の通り、書きました。 どこが違うかご指摘願います。 よろしくお願いします。。 'VLOOKUPを行う Sheets("過去履歴").Range("BJ6").Value = Application.WorksheetFunction.Vlookup(Sheets("登録書").Range("A2").Value,Sheets("過去履歴").Range("B6:BG65536"),1,0)

  • vbaにvlookupを組み込む

    お世話になります。 エクセルのマクロにvlookupを組み込みたいのですが,エラーが出てしまいます。 用意したものは「顧客名簿」というシートで,A列に顧客番号(6ケタの数字),B列に顧客名が入っています。C列以降はその他のデータが入っています。 「トップメニュー」というシートにあるマクロボタン「顧客抽出」を押すと,インプットボックスが現れます。これに顧客番号を入力すると,メッセージボックスが現れます。 この時のメッセージボックスに,インプットボックスに入力された番号により「顧客名簿」から顧客名を取り出し,「○○さんのデータを表示しますか」としたいのですが,ここでエラーが出ます。(○○は,「顧客名簿」のB列にある名前です) 実行時エラー 1004 WorksheetFunctionクラスのVLookupプロパティを取得できません。 組んであるマクロは以下の通りです。 Sub 顧客抽出() Dim ans As String, ans2 As String     ans = InputBox("顧客番号を入力", "入力", "")         If ans = "" Then             MsgBox "顧客番号が空白です" & vbNewLine & _                "処理を中止します", vbOKOnly         Else             If WorksheetFunction.CountIf(Worksheets("顧客名簿").Range("A1:B5000"), ans) = 0 Then                 MsgBox "顧客番号が登録されていません", vbOKOnly             Else                 ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False)                 If MsgBox(ans2 & " さんのデータを表示しますか", vbYesNo) = vbYes Then                     Sheets("顧客情報").Select                     Range("D4").Value = ans                 Else                     MsgBox "処理を中止します", vbOKOnly                 End If             End If         End If End Sub 途中にある ans2 = WorksheetFunction.VLookup(ans, Worksheets("顧客名簿").Range("A1:B5000"), 2, False) の部分でエラーが出るのですが,解決策が見当たりません。 おそらくRange("A1:B5000")の部分に不具合があると思うのですが,どう対処すればいいでしょうか。 詳しい方,ご教授願います。

  • ExcelVBA:WorksheetFunctionのいろんな記述とエラー

    Excel2000でVlookup関数を記述してるんですが、WorksheetFunctionで以下のエラーメッセージが出てきます。 「エラー:1004 ApplicationクラスのVlookupプロパティーが取得できません」 (試してみた記述例) ○myVar = Application.WorksheetFunction.Vlookup(検索値, 範囲, 列位置, 検索の型) ○myVar = WorksheetFunction.Vlookup(検索値, 範囲, 列位置, 検索の型) 仕方ないので、97記述をすると問題なく出来ます。 (97記述例) ○myVar = Application.Vlookup(検索値, 範囲, 列位置, 検索の型) 今は97記述でしのげてます。 でも、たしかExcel2000からは、ワークシート関数はWorksheetFunctionを利用することになったんじゃないんでしょうか。 この記述がいつまで通用するのか分からないので、ちょっと不安です。

  • エクセル VBA VLOOKUP

    お世話になります。 VLOOKUPの範囲を変数で取得したいのですが教えて下さい。 下記コードは動きますが、検索範囲の("A1:C4")の『C4』を変数に変更はできますでしょうか。 (データは増える予定ですなので) Range("E1") = Application.WorksheetFunction.VLookup(Range("D1"), Range("A1:C4"), 2, False) 宜しくお願い致します。

  • worksheetsプロパティでエラーが出る

    VBA初心者です。 vlook関数をVBAで再現したく、ネットのあれこれを参考にコードを組んでみましたがエラーが出てしまいます。 同一ブックの中にある、Aシートをデータ範囲としてBシートに値を引っ張りたいのですが、 以下のようなコードを書くと「アプリケーション定義またはオブジェクト定義のエラーです」とでます。 Set 範囲 = Sheets("A").Range(A1:D100) For i = 1 To 100 検索値 = Sheets("B").Range(i , 9) 値1 = Application.WorksheetFunction.VLookup(検索値, 範囲, 2, False) 値2 = Application.WorksheetFunction.VLookup(検索値, 範囲, 3, False) Next vlookの前にSetのところでエラーがでます。 どうやら、シートがアクティブではないから、ということのようですが、正直どのように直したらよいものかわかりません。 Sheets("シート名").Range("範囲") とすれば、事前にシートをアクティブにする必要はないと思っていたのですが、そもそも間違っていますでしょうか? どうぞご教授くださいますと幸いです。

  • Vlookupマクロにつきまして

    初心者で、 エクセルのマクロにて、下記の処理を行おうとしているのですが、 上手く行きません。 どなたかお助けください! B3=Vlookup(A3,Sheet2!A:F,3,False) B4 A4 B5 A5 とA列に値がある限りカウントアップしていきます。 以下の通り考えてみたのですが、動きません。 Sub vlookup() Dim i As Long For i = 3 To Cells(Rows.Count, "A").End(xlUp).Row Cells(i, "B") = Application.WorksheetFunction.VLookup(Range(Cells(i, "A")), Worksheets("Sheet2").Range("A:F"), 3, False) Next End Sub すみません、宜しくお願いします。

  • VBAの繰り返し処理について・・・

    VBAの繰り返し処理について・・・ 現在、以下のようなVBAを右も左もわからないまま、見よう見まねで記述してみました。 一応しっかりと動いています。きっと間違いだらけの記述かとは思いますが・・・ rowcnt = 2 Do B値 = ActiveSheet.Range("B" & rowcnt) C値 = ActiveSheet.Range("C" & rowcnt) D値 = ActiveSheet.Range("D" & rowcnt) If B値 = C値 And C値 = D値 Then ActiveSheet.Range("B" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) Else If B値 = C値 Then ActiveSheet.Range("D" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) ElseIf C値 = D値 Then ActiveSheet.Range("C" & rowcnt).Copy ActiveSheet.Range("A" & rowcnt) End If End If rowcnt = rowcnt + 1 Loop Until rowcnt > 3176 現在sheet1~sheet8(それぞれシート名が入っています)まであり、上記の命令をsheet2~sheet8までのシート全てに適用したいと考えています。 Arrayを使う方法などいろいろ調べているのですが、うまくいきません。 正しい命令方法をお教えいただけたらありがたく思います。

  • 日付セルをVBAのVLOOKUPで見つけられません

     今日は、質問させていただきます。どうぞよろしくお願いいたします。  環境:Excel2010+Win7 でございます。  今、A列の日時データの中から、特定の日時のセルの行を取得しようといたしまして、下記のようにコーディングいたしました。が何故か WorksheetFunction.CountIfでは見つかっているのですが WorksheetFunction.VLookupではエラーが帰ってまいります。 【A列のデータ】(ユーザ定義で「yyyy/mm/dd hh:mm:ss.000」としております。) 2015/05/16 22:00:00.002 2015/05/16 22:00:00.182 2015/05/16 22:00:00.342     :     : 【VBA】 Sub test()  Dim WS_DATA As Worksheet  Set WS_DATA = ThisWorkbook.Worksheets("Sheet1")  With WS_DATA   str時間 = "2015/05/16 22:00:00.002"   If WorksheetFunction.CountIf(.Range("A:A"), str時間) > 0 Then    MsgBox (Application.WorksheetFunction.VLookup(str時間, .Range("A:A"), 1, False)) '←ここでエラーになります   Else  MsgBox str時間 & "がリストに存在しません。"   End If  End With End Sub 【実行結果】  コード中に記しましたエラー箇所で、 「実行時エラー1004   WorksheetFunctionクラスのVlookupプロパティーを取得できません」となります。検索範囲内に見つからない場合のエラーのようでございます。  あとVBAに 日時 = Format(str時間, "yyyy/mm/dd hh:mm:ss.000") を追記して、この「日時」を探してみましたが、同じ結果になりました。。。 (CountIfでは見つかっていますが、Vlookupではエラーになります。)  データが大量にありますので高速に検索出来る方法を探しておりますが (=おそらく、VLookUpを使うか、もしくはA列をVariant型に入れて検索する?)、 何か良い方法はないものでございましょうか?  もしお詳しい方がいらっしゃいましたら,是非アドバイスいただきたく 何卒よろしくお願いいたします。