• ベストアンサー

エクセルのVBA関数の実行する方法は

お世話になります イメージを描きやすいように、例を挙げます Function sample()   MsgBox("こんにちわ") End Function と こんな関数をエクセル上で Visual Basic Editorアイコンを押すと VBA画面が開きますから、コードを書くところに 上の3行の関数、sample()、を記入します 左のイミディエイトウィンドウ(環境によるかも知れません) に sample(Enterキー) と入力すると Sub または Function が定義されていません と、エラーが出ます ACCESSのVBAであれば、これで実行できる、とおもいますが エクセルの場合はどうするのでしょうか

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >ACCESSのVBAであれば、これで実行できる、とおもいますが >Function sample() >  MsgBox("こんにちわ") >End Function 初歩的なことですが、Access は、実際には、コントロール側から、ユーザー定義関数を働かせますが、Excelの場合は、通常は、実行型のプログラムは、ユーザー定義関数ではなく、マクロ型(Sub ~End Sub)にします。もし、Excelで実行型のプログラムが必要な場合は、直接コントロール(例:Sub CommandButton1_Click() ~End Sub)に入れてしまえばよいからです。 また、Excelの場合、Function は、複雑な計算に用いるもので、いわゆる設定させたりする、実行型のプログラムは、静的な空間では、通常は不可能なのです。(それを起動させているのは、通常は、それをサブルーチンにして、Enter や別のプロシージャなどの外部的な命令です。) したがって、例えば、書式を変えたり、入力させたり、メッセージを出したりというのは、ユーザー定義関数では不可能です。(絶対的ではありまんせが、それは、めったに用いられない裏技です。) Excel の場合、 なぜ、[イミディエイトウィンドウ]から、そのようなコードを実行しなくてはならないのか、意味が分かりませんが、 Call sample() とすればよいです。 ただし、そのまま、その関数を実行させるには、標準モジュールに書いてないといけません。 通常は実行型にするためには、以下のようにします。 Sub TestPrc1    MsgBox "こんにちは" End Sub Excel上では、実行型のユーザー定義関数は、なるべく、マクロ型(Sub ~End Sub[引数のない完結型])にした方がよいです。また、Accessからコードを移植する場合は、多少、両方のVBAの知識が必要です。

maaaa
質問者

お礼

ありがとうございました ACCESSとの違いをわかりやすく していただき、助かりました

その他の回答 (3)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

>Sub または Function が定義されていません ということはコードが標準モジュールではなくてシートモジュールに書かれているはずです。 VBEのタイトルバーに、Sheet1[コード]などとシート名が表示されてませんか? シート名が表示されていればそのシートモジュールにコードが書かれているわけですから、 実行する場合は、Sheet名.Procedure名となります。    Sheet1.Sample  Enterキー ただ、質問のようなコードは通常「標準モジュール」に書きますから、「標準モジュール」に書けば、質問のように    Sample  Enterキー で実行できます。

maaaa
質問者

お礼

よくわかりました 実行できました 助かりました

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

#1です。一つ忘れてた。 イミディエイトウィンドウ上で実行させる場合は Msgbox sample() とか Print sample() のように結果をどのように処理するか設定すれば確認できます。

maaaa
質問者

お礼

ありがとうございました

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

ユーザー定義関数ならセル上で =sample() と入力してEnterですね。 でも内容が計算の結果でなくメッセージの表示ならマクロとして登録のうえ マクロの実行(登録したボタンorショートカットキー)の方がいいのでは?

maaaa
質問者

お礼

ありがとうございました

関連するQ&A