dポイントプレゼントキャンペーン実施中!

いつもお世話になっております。

早速ですが、ExcelVBAでNZ関数を使いたいのですが、

「実行時エラー'429'
ActiveXコンポーネントはオブジェクトを作成できません。」

とエラーが出て、うまくいきません。


実現したい結果は、テキストボックスに入力された値に対して
Nullチェックし、Nullの場合、変数に"名無し"と入力するとった
処理です。

ロジックは以下のように書きました。

Dim strName As String
strName = Nz(txtName.text,"名無し")

環境は以下の通りです。
・Windows Vista Home Premium
・Excel2007

よろしくお願いします。

A 回答 (3件)

Nz関数は、VBAのメンバではなく、Accessアプリケーションのメンバですので、


残念ながらExcelでは使用できません。
(下図を参照)

代替策としては、IIF関数とIsNull関数(ともにVBAのメンバ)を組み合わせるのが
簡単かと思います。

【現在】
  strName = Nz(txtName.Text, "名無し")

【修正案・1】
  strName = IIF(IsNull(txtName), "名無し", txtName.Text)

【修正案・2】
  strName = txtName.Text & IIF(IsNull(txtName),"名無し", "")
「ExcelVBAでのNZ関数について」の回答画像3
    • good
    • 0
この回答へのお礼

丁寧な解説ありがとうございます。

お陰さまで、実現したい結果を得ることができました。

またよろしくお願いいたします。

お礼日時:2009/06/28 00:29

>ExcelVBAでのNZ関数


のExcelが間違いなければ、エクセルVBAの関数でNZ関数は無いのでは。
アゥセスとちょっとセル(ACCESSではフィールドの各セル)の未入力の考えが違うような気がする。
エクセルのセルでは""で判定してます。
>ActiveXコンポーネントはオブジェクトを作成できません
2007以前でのテストですが
Sub test01()
Dim strName As String
strName = Nz(txtName.Text, "名無し")
End Sub
を実行すると、NZで「SubまたはFunctionが定義されていません」とでます。
エラーを推測している場所が違うのでは。
関係ないとは思うが、2007で変わっていることが原因ならすみません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

またよろしくお願い致します。

お礼日時:2009/06/28 00:31

>ActiveXコンポーネントはオブジェクトを作成できません。



Nz関数の作成者に聞くのが適切だと思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています