お世話になります
イメージを描きやすいように、例を挙げます
Function sample()
MsgBox("こんにちわ")
End Function
と
こんな関数をエクセル上で
Visual Basic Editorアイコンを押すと
VBA画面が開きますから、コードを書くところに
上の3行の関数、sample()、を記入します
左のイミディエイトウィンドウ(環境によるかも知れません)
に
sample(Enterキー)
と入力すると
Sub または Function が定義されていません
と、エラーが出ます
ACCESSのVBAであれば、これで実行できる、とおもいますが
エクセルの場合はどうするのでしょうか
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の知識が必要です。
No.3
- 回答日時:
>Sub または Function が定義されていません
ということはコードが標準モジュールではなくてシートモジュールに書かれているはずです。
VBEのタイトルバーに、Sheet1[コード]などとシート名が表示されてませんか?
シート名が表示されていればそのシートモジュールにコードが書かれているわけですから、
実行する場合は、Sheet名.Procedure名となります。
Sheet1.Sample Enterキー
ただ、質問のようなコードは通常「標準モジュール」に書きますから、「標準モジュール」に書けば、質問のように
Sample Enterキー
で実行できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが 4 2022/10/07 10:02
- Visual Basic(VBA) Excel VBAで並べ替えをしたい 3 2023/02/25 09:31
- JavaScript functionはhtmlやjsに2度使えませんか 2 2022/08/03 19:55
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンのスクリーンセーバー...
-
Windows10 で青鬼を遊びたいの...
-
latexでのエラー
-
chatGPTで次々と質問をしていく...
-
PC版のMinecraftが応答なしにな...
-
Excel実行時エラー-2146959355?
-
エクセルVBA、ステップモードと...
-
COBOLで集団項目から符号...
-
VSコード
-
プログラムが書けません。
-
プロパティの値が不正ですって...
-
EXCEL-VBAでコマンド...
-
pythonで他のアプリを操作する...
-
プログラミングについてです。...
-
管理者として実行を毎回すると...
-
パソコンに何かが勝手にダウン...
-
eclipseで、「ポート番号が使用...
-
【急いでます!】pythonでキー...
-
execelのVBAでIEの操作
-
ATOMは何の略ですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンに何かが勝手にダウン...
-
Excel実行時エラー-2146959355?
-
パソコンのスクリーンセーバー...
-
chatGPTで次々と質問をしていく...
-
管理者として実行を毎回すると...
-
latexでのエラー
-
eclipseで、「ポート番号が使用...
-
PC版のMinecraftが応答なしにな...
-
エクセルVBA、ステップモードと...
-
VB.NETでボタンのクリックイベ...
-
EXCEL-VBAでコマンド...
-
至急!RedmiPadを文鎮化させて...
-
Windows10 で青鬼を遊びたいの...
-
プログラム実行中に強制停止さ...
-
プログラミングについてです。...
-
VSコード
-
COBOLで集団項目から符号...
-
pythonで他のアプリを操作する...
-
VB.NETでDataTableにデータ追加...
-
Flashゲームをホームページで楽...
おすすめ情報