[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件式で、数字の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 >
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
>出来ない理由
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.