• ベストアンサー

エクセル VBAで セルがエラーの場合の判別法は?

ワークシート関数ならセルA1がエラーかどうかは =ISERROR(A1) でわかりますが、VBAで 「If A1がエラーだったら Then~」とういのはどのように書くのでしょうか?

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 No.1の方のように、直接 Application.WorksheetFunction.IsError("A1") とセルを引数に入れては出来ないと思います。 Rangeオブジェクト変数に入れないとダメじゃないでしょうか。 Dim rg As Range Set rg = Range("A1") If Application.WorksheetFunction.IsError(rg) Then   '処理 End If という感じで。

AQUALINE
質問者

お礼

おそくなりましたが、大変有難うございました。 うまく出来ました。

その他の回答 (1)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

If Application.WorksheetFunction.IsErr("A1") Then Range("A2") = "4" というふうに ワークシート関数を使う場合は、 Application.WorksheetFunction. をつけます。

AQUALINE
質問者

お礼

おそくなりましたが、大変有難うございました。 Application.WorksheetFunction. 勉強になりました。

関連するQ&A

  • Excel VBA ブック内にエラーがあるかないか

    Excel VBA で、ある特定のセルが#REFなどのエラーになっているかどうかは If IsError(ThisWorkbook.Worksheets("Sheet1").Range("AB1256")) Then  MsgBox ("ファイルのデータが壊れています") End If というように、IsError()関数を使えば確認できます。 また、あるセル範囲の中にエラーになっているセルがあるのかどうかも、For文やFor Each文で順番にチェックしていけばできると思いますが、 シート全体、さらにはブック全体の中で、エラーになっているセルがあるのかないのかを簡単にチェックする方法はないでしょうか。エラーになっているセルは特定できなくてもいいです。 よろしくお願いします。(Windows7 , Excel2010)

  • vbaにおいて、セルのエラー検出に関して

    vbaにてセルに入力する数式のエラー検出に関して教えてください。 iserror関数で検出できない数式を簡単に検出する方法ありませんか? sub test() dim str as string str=" C2*C3* " cells(5,7).value=str end sub 簡単なVBAのコードですが、*の右側はセル相対参照もセル絶対参照も数値も入っていませんので、数式としてはエラーです。 strの値を(5,7)のセルに放り込んだら、vbaのエラーで停止してしまいます。 かといって、iserror()を使って、 sub test() dim str as string str="C2*C3*" if iserror(str)=true then else cells(5,7).value=str end if end sub としても、エラーをはじいてくれず、VBAでもエラーを出力してしまいます。 力業で、strの数式エラーをはじくしか方法はないのでしょうか? インターネットを調べているのですが、的を射た答えが出てきません。 どなたか詳しい方ご教示ください。

  • エクセルとセルの比較について

    エクセルとセルの比較について エクセル2007で二枚のシートを以下のように作成しました。 シート1   A 1   ←全くの未入力の空白セルです 2 3 シート2   A 1   ←未入力で空白セルですが、数式(if関数とISERROR関数)が入っています。 2 3 ここでしたい処理は、二枚のシートをIF関数で調べて正誤チェックをして、相違するセルに×を表示したいです。 ただ、A1セルに  if(シート1A1=シート2A1,"","×")  の数式をいれると、両者は違うセルとして認識してしまいます。 同じ空白セルなのにどうしてでしょうか。 また、この二つのセルはともに空白なので、同じものとして処理する方法はあるのでしょうか。 お願いします。

  • Excel ワークシート関数をVBAで使用したい

    お世話になります。 Excelでワークシート関数をVBAで使用したいのですが、うまくいきませんでした。 関数ですと「ISERROR(FIND(V$10,R$11))=FALSE」のような式をVBA上で使用したいと思い、以下のようにコードを書いてみましたが If Application.WorksheetFunction.IsError(Application.WorksheetFunction.Find(Cells(i, j), Cells(i, 18))) = False Then Cells(i, j).Select End If 「実行時エラー'1004' WorksheetFunction クラスのFindプロパティを取得できません」となります。 入れ子が問題なのでしょうか。 よろしくお願いします。

  • Excel VBA セルの双方向同期のエラーについ

    エラーが発生して理由がわからないので、どなたか助言をお願いします。 以下のVBAにて、目的のセルにデータを入力すると、1回目は必ず添付写真の通りのエラーが出まして、デバッグをすると3行目が黄色でハイライトされます。 記述は以下の通りです。どうぞよろしくお願いします。 シートAへのVBA設定 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Sheets("シートB").Range("$B$1").Value = Sheets("シートA").Range("$A$1").Value End If End Sub シートBへのVBA設定 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$B$1" Then Sheets("シートA").Range("$A$1").Value = Sheets("シートB").Range("$B$1").Value End If End Sub

  • エクセルVBA If Then 構文でOR条件の場合のVBA記述方法は?

    仮にセル("A1")が空白か Falseの場合は Then 以下のことをする。 と書きたいのですが If Sheets("Sheet1").Range("A1")="" Then ~略 If Sheets("Sheet1").Range("A1")=False Then ~略 と別々に記載する方法しかわかりません。 ワークシート関数のようにIF(OR(A1="",A1=False),~略)というようにまとめて記述するにはどう書けばいいのでしょうか? AND条件の場合も教えてください。よろしくお願いします。

  • VBAでワークシートのセルにIF文を入れる

    こんにちは。 VBAでワークシートのセルにIF文を入れ、実行するとエラーがでます。 記述間違いでしょうか? 記述 Worksheets(h.Value).Range("D14").Formula = "=IF(ISERROR(((D5+D6+D7)/D4) = TRUE,"",(D5+D6+D7)/D4)) どこがおかしいのか、どうか教えてください。

  • エラー値を含み、空白以外の場合を識別したい

    エクセル2000です。 A1セルがエラー値を含み、空白以外の場合を識別したいのですが、以下のように回りくどく書く以外に良い方法があったらお教えください。 空白とは関数によって "" が表示されている場合と、まったくの空白の両方のことです。 Sub test() Dim buf As Boolean buf = IsError(Sheets("Sheet1").Range("A1")) If Not (buf) Then buf = Sheets("Sheet1").Range("A1").Value <> "" End If If buf Then MsgBox "該当しちゃいました。" End If End Sub

  • Excel VBAでエラーが出てしまう

    Excel VBAで今現在選択しているシートから"春"というワークシートに移動して"A1"セルを選択しようとするプログラムを作ろうとしています。 Worksheets("春").Select Range("A1").Select ならできるんですけど、 Worksheets("春").Range("A1").Select ならエラーになります。 なぜなのでしょうか?

  • 【エクセル】 VBAでエラーが出てわかりません。。

    やりたいことは、関数をマクロでセルに記入してオートフィルで指定した行数まで伸ばしたいのです。 (すでに関数で作成したファイルがあるのですが、行数が多いため、とても重い。。^^;) まずマクロの記録で次のマクロを取得しました。 Sub Macro4() Range("C4").Select ActiveCell.Formula = "=SUM(A2:A10)" Range("C4").Select Selection.AutoFill Destination:=Range("C4:C12"), Type:=xlFillDefault Range("C4:C12").Select Range("D11").Select End Sub そして、 Sheet2に貼り付けて > ActiveCell.Formula = "=SUM(A2:A10)" の"=SUM(A2:A10)"部分をちょっと長い関数ですが、 "=IF(ISERROR(INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1)),"",INDEX(Sheet1!$I$1:Sheet1!$I$400,SMALL($A$2:$A$400,ROW(A1)),1))" と書き換えてマクロを実行すると「アプリケーション定義またはオブジェクト定義エラーです。」 というエラーが出てしまうんですが、どこを直せばわからないです。。 おかしいところを教えてください、よろしくお願いします。 わかり図らい説明かと思いますが。。この件(1行目の文)について似たようなことを解説して いるサイトがありましたら、教えて欲しいです。

専門家に質問してみよう