[[20190507235008]] 『条件式で、数字の0または#N/Aのエラー値でなけれax(たろう) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件式で、数字の0または#N/Aのエラー値でなければ、と記述したい』(たろう)

例えば
For i = 1 To 10

If Cells(i, 2).Value <> 0 Or CVErr(xlErrNA) Then

       Cells(I, 4).Value = Cells(i, 2).Value

End If

Next

としたり、
Or の後を IsError(I, 2) Then

としたり、ネットの説明を参考に試行錯誤しましたが、
エラー値のところにくると、型が一致しませんという表示が出てマクロがストップしてしまいます。

どのように記述すればいいのでしょうか。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


一例です。
cells(i,2).text <> "#N/A"
(sheet無限増殖) 2019/05/08(水) 00:46

確かにうまくいきませんね・・・
とりあえず、2段構えにしたらできましたが、出来ない理由を説明してくれと言われると私には無理っぽい・・
    Sub たとえば()
        Dim i As Long

        For i = 1 To 10
            If IsError(Cells(i, 2).Value) Then
                'エラー値であって、#N/Aでない場合
                If Cells(i, 2).Value <> CVErr(xlErrNA) Then
                    Cells(i, 4).Value = Cells(i, 2).Value
                End If
            Else
                'エラー値でなくて、数値であって、0でない場合
                If IsNumeric(Cells(i, 2).Value) And Cells(i, 2).Value <> 0 Then
                    Cells(i, 4).Value = Cells(i, 2).Value
                End If
            End If
        Next
    End Sub

(もこな2) 2019/05/08(水) 00:53


 Not Application.IsNA(Range("B1").Value)
 orの使い方が間違ってる、andで
(BJ) 2019/05/08(水) 03:50

ご回答ありがとうございました。
いろいろ試してみます。
(たろう) 2019/05/08(水) 18:46

 >出来ない理由

 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/cverr-function

 ここには
 「VarType が vbError (10) である Variant」を返し、
 「Error の暗黙的な変換はできないことに注意」しろってあります。

 Error型とそれ以外の型はそのままでは比較は出来ないってことみたいですね。
(2u) 2019/05/08(水) 19:14

 たろうさん、出てこないなぁ。

 私としては以下のことが知りたい。

 1.この問題を解決するために、CVErr(xlErrNA)を使っていますが、
   どこかのサイトで、そんな時はその関数を使ってチェックするといい、などと書いてあったんでしょうか?

   もし、そうならどこのサイトか教えてください(覚えていなければ結構です)

     CVErrのヘルプを見ると、とあって、ユーザー定義のエラーを作るのがメジャーな使い方と言う気がします。
               ↓
   「CVErr 関数を使用して、作成したプロシージャ内でユーザー定義のエラーを作成できます。」

   普通は、BJさんの Application.IsNA() で対応することが多い様な気がするんですがねぇ。。

 2.何故、#N/Aエラーだけ問題にするんですか?
   私の長いエクセル使用歴で、そんな区別をしたのは1回あるか無いかです。

   通常は、エラーかどうかだけで済ましています。
   本当に別のエラー(例えば#DIV/0!)は、OKにしたいと言う趣旨なんですか?

(半平太) 2019/05/09(木) 19:41


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.