• 締切済み

Worksheet Function使用時のエラー

end-uの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.5

エラー処理ルーチン内で更にエラー制御しようとしていませんか? http://www.accessclub.jp/bbs5/0031/vba9642.html そのケースに該当しないようなら、検証できる最低限の再現コードを提示できますか? 部分的にではなく、一連の流れの中で他者も検証できれば回答がつくかもしれません。 以下余談で。 VLookupやMatch関数は、WorksheetFunctionクラスの関数ではなく Applicationクラスの関数として使うとエラー制御の必要がなく、比較的容易なコーディングが可能です。 Dim ticker As Long Dim flag1 As Long Dim x   As Variant ticker = 1332 flag1 = 0 x = Application.Match(ticker, Sheets("r" & Mid(Sheets("InsampleData").Cells(2, 2), 1, 4)).Range("A1:A10000"), 0) If IsNumeric(x) Then   flag1 = ticker End If や Dim ticker As Long Dim flag1 As Variant ticker = 1332 flag1 = Application.VLookup(ticker, Sheets("r" & Mid(Sheets("InsampleData").Cells(2, 2), 1, 4)).Range("A1:A10000"), 1, 0) If IsError(flag1) Then   flag1 = 0 End If 戻り値用にVariant型変数を用いるとエラー値も格納できるため、 戻り値を調べて処理分岐すれば良いです。

関連するQ&A

  • 実行時エラー”1004”アプリケーション定義または

    次のようなコードで10の平均と20の平均はエラーにならないのですが75の時のみエラーになります Sheets(SN).Cells(gyou, 22)のセルにはすべて数字があるのですがエラーになります。 エラー”1004”アプリケーション定義またはオブジェクト定義のエラー au = 100 sk1 = 10 sk2 = 20 sk3 = 75 If WorksheetFunction.Sum(Range("V90:V99")) <> 0 Then Sheets(SN).Cells(au, 24).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk1 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V75:V99")) <> 0 Then Sheets(SN).Cells(au, 25).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk2 - 1), 22), _ Sheets(SN).Cells(au, 22))) End If If WorksheetFunction.Sum(Range("V25:V99")) <> 0 Then Sheets(SN).Cells(au, 26).Value = Application.WorksheetFunction.Average(Sheets(SN).Range(Cells(au - (sk3 - 1), 22), _ Sheets(SN).Cells(au, 22))) エラーの原因を教えてくださいよろしくお願いします。

  • VBA 実行時エラー1004(その2)

    毎度お世話になっております。 シート「sheet2」のA列のリスト内容を、シート「M_得意先」のリストからVLOOKUPして、指定のセルに書き出していくというコードを作成してみたのですが、VLOOKUPを実行する段階でエラーが出てしまいます。 少し変更して、同一シート内でのVLOOKUPは問題なく実行できたのですが...原因をご存知の方教えてください。 Dim b As String Dim endRcell2 As Long Dim cnt10 As long Sheets("sheet2").Select Sheets("sheet2").Range("A1").CurrentRegion.Select 'データ全体選択 Selection.SpecialCells(xlCellTypeLastCell).Select '最終行検出 endRcell2 = ActiveCell.Row cnt10 = 2 Do ↓実行時エラー1004が出る行 b = Application.WorksheetFunction.VLookup(Sheets("Sheet2").Range("A" & cnt10).Value, Sheets("M_得意先").Range(Cells(1, 1), Cells(endRcell, 2)), 2, False) ↑実行時エラー1004が出る行 Sheets("sheet2").Range("E" & cnt10).Value = b cnt10 = cnt10 + 1 Loop Until cnt10 = endRcell2

  • vlookupプロパティで実行時エラーが出る

    vlookup関数をマクロで行いたいと思っており、ネットで調べながらコードを書いております。 違うシート間でうまくいったコードをコピーし、変数等を直して実行してみたところ1004の実行時エラーが出てしまいます。 ソースシートをデータの範囲元とし、シート内にあるI8から始まるデータについて、vlookupをしたいのですが、vlookupプロパティの実行時にエラーが出ます。 範囲指定も検索値についても値が入っており、何が問題かわかりかねており困っております。 ソースシート = "KW_All" 'ソースシートの範囲定義 ソース上 = 8 ソース左 = 5 ソース右 = 5 ソース下 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(8, 5), Sheets(ソースシート).Cells(8, 5)).End(xlDown).Row シート = "Keyword" 'keywordシートの範囲定義 上 = 3 左 = 1 右 = 9 下 = Worksheets(シート).Range(Worksheets(シート).Cells(上, 左), Worksheets(シート).Cells(上, 左)).End(xlDown).Row keyword数 = 下 - 上 + 1 Set 範囲 = Sheets(ソースシート).Range(Sheets(ソースシート).Cells(ソース上, ソース左), Sheets(ソースシート).Cells(ソース下, ソース右)) For i = 1 To keyword数 検索値 = Sheets(シート).Range("I" & 上 + i - 1) Range("J" & 上 + i - 1) = Application.WorksheetFunction.VLookup(検索値, 範囲, 1, False) Next どうぞご教授くださいますと幸いです。

  • 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("範囲") とすれば、事前にシートをアクティブにする必要はないと思っていたのですが、そもそも間違っていますでしょうか? どうぞご教授くださいますと幸いです。

  • VBAで実行時エラー1004が出ます

    VBAで実行時エラー1004が出ます。 「Rangeメソッドは失敗しました。Worksheetオブジェクト」です。 あらゆる可能性を調べたのですが、分かりません。誰か教えて頂けますでしょうか? 下記コードの「Cells(m, 7) =・・・」の部分がエラーになりました。 Sub ボタン1_Click() Dim 現シート As Worksheet ~ 現シート.Activate Cells(m, 7) = WorksheetFunction.VLookup(現シート.Range(現シート.Cells(m, 4)).Select, 現シート.Range(現シート.Cells(4, 104), 現シート.Cells(15, 107)).Select, 4, False) ~ End Sub 何卒宜しくお願いいたします。

  • 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 ---------------------

  • マクロ記述の意味

    下記のようなマクロがかかれているのですが 記述の意味がわかりません。 教えてください。 Dim h On Error Resume Next Sheets("滞留在庫表").Select With Application.WorksheetFunction For h = 2 To Range("C9999").End(xlUp).Row Cells(h, "V") = "****" Cells(h, "V") = .VLookup(.Replace(String(18, "?"), 8, 1, Mid(Cells(h, "C"), 8, 1)), _ Sheets("表示再設定マスタ").Range("A5:B22"), 2, False) Next h End With

  • 実行時エラー '424'  オブジェクトが必要です

    デバッグ中で、下記のエラーが出て、進めません。 実行時エラー '424' オブジェクトが必要です。 Dim x1, x2, st1, st2, st3 As String x1 = Cells(41, 5).Value Set st1.Value = Application.WorksheetFunction.VLookup(x1, Range(Cells(102, 2), Cells(106, 4)), 3, False) x1  Cells(102, 2)  Cells(106, 4)には値が入っています。 アドバイス宜しくお願い致します。

  • VBA:実行時エラー1004

    VBAにて以下のコードを実行すると実行時エラー1004が出ます。 dim tokuisakicode as string If Not Sheets("sheet2").Range("A" & cnt2).Value = Sheets("sheet2").Range("A" & cnt2 - 1).Value Then  tokuisakicode = Sheets("Sheet2").Cells(cnt2, 1).Value ↓エラーが出る行  Sheets("A").Cells(1, cnt6).Value = tokuisakicode ↑エラーが出る行  cnt2 = cnt2 + 1  cnt6 = cnt6 + 1 Else  cnt2 = cnt2 + 1 End If エラー1004は自分の経験上記述ミスなどのケアレスミスが多いのですが、今回は原因がどうしてもわかりません。 お分かりの方みえたらお教えください。

  • WorksheetFunctionオブジェクト

    VBAで以下のロジックを実行すると、 ”アプリケーションの定義またはオブジェクトのエラーです”というエラーが発生します。 何が悪いのでしょうか? Private Sub ComboBox1_Change() For i = 1 To 5  Sheets(1).Cells(i, 3) = Application.WorksheetFunction.VLookup(Cells(i, 1), Range(Cells(1, 4), Cells(3, 5)), 2) Next i End Sub