こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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の数式エラーをはじくしか方法はないのでしょうか?
インターネットを調べているのですが、的を射た答えが出てきません。
どなたか詳しい方ご教示ください。

投稿日時 - 2019-10-07 10:49:23

QNo.9664654

困ってます

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

そもそも、
 str=" C2*C3* "
 cells(5,7).value=str
はセルに変数strという文字列を書き込んでいます。
同時に式(Formula)にもstrが書き込まれます。文字列も式なのでエラーになりません。cells(5,7).value=str の次の行に、次の2行を書き込んで実行してみてください。
 MsgBox "Value: " & Cells(5, 7).Value
 MsgBox "Formula: " & Cells(5, 7).Formula


式を代入してエラーを検知するには、

Sub test()
 Dim str As String
 
 On Error GoTo errorTrp
 
 str = " C2*C3* "
 Cells(5, 7).Formula = "=" & str

 Exit Sub
errorTrp:
 MsgBox "エラー番号: " & Err.Number & Chr(13) & Err.Description
End Sub

のようにすればいいでしょう。Formulaプロパティに代入する必要があります。算式なので、"="が必要です。

On Errorを省けば、Formula代入行で実行時エラーが出ます。

投稿日時 - 2019-10-07 13:45:40

お礼

丁寧にご回答ありがとうございます。
on errorでエラーを検出すればよかったのですね。
当方、初心者だったので、勉強になりました。
素早くご回答をいただいたのでベストアンサーとさせていただきます。

投稿日時 - 2019-10-07 15:57:19

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問