• ベストアンサー

ExcelVBAでのNZ関数について

いつもお世話になっております。 早速ですが、ExcelVBAでNZ関数を使いたいのですが、 「実行時エラー'429' ActiveXコンポーネントはオブジェクトを作成できません。」 とエラーが出て、うまくいきません。 実現したい結果は、テキストボックスに入力された値に対して Nullチェックし、Nullの場合、変数に"名無し"と入力するとった 処理です。 ロジックは以下のように書きました。 Dim strName As String strName = Nz(txtName.text,"名無し") 環境は以下の通りです。 ・Windows Vista Home Premium ・Excel2007 よろしくお願いします。

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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),"名無し", "")

dodory
質問者

お礼

丁寧な解説ありがとうございます。 お陰さまで、実現したい結果を得ることができました。 またよろしくお願いいたします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

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

dodory
質問者

お礼

回答ありがとうございました。 またよろしくお願い致します。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.1

>ActiveXコンポーネントはオブジェクトを作成できません。 Nz関数の作成者に聞くのが適切だと思います

関連するQ&A