お世話になります
イメージを描きやすいように、例を挙げます
Function sample()
  MsgBox("こんにちわ")
End Function

こんな関数をエクセル上で
Visual Basic Editorアイコンを押すと
VBA画面が開きますから、コードを書くところに
上の3行の関数、sample()、を記入します

左のイミディエイトウィンドウ(環境によるかも知れません)

sample(Enterキー)
と入力すると
Sub または Function が定義されていません
と、エラーが出ます
ACCESSのVBAであれば、これで実行できる、とおもいますが
エクセルの場合はどうするのでしょうか

A 回答 (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の知識が必要です。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/12/01 13:30

>Sub または Function が定義されていません



ということはコードが標準モジュールではなくてシートモジュールに書かれているはずです。
VBEのタイトルバーに、Sheet1[コード]などとシート名が表示されてませんか?

シート名が表示されていればそのシートモジュールにコードが書かれているわけですから、
実行する場合は、Sheet名.Procedure名となります。

   Sheet1.Sample  Enterキー

ただ、質問のようなコードは通常「標準モジュール」に書きますから、「標準モジュール」に書けば、質問のように

   Sample  Enterキー

で実行できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/12/01 13:28

#1です。

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

ありがとうございました

お礼日時:2006/12/01 13:28

ユーザー定義関数ならセル上で


=sample()
と入力してEnterですね。
でも内容が計算の結果でなくメッセージの表示ならマクロとして登録のうえ
マクロの実行(登録したボタンorショートカットキー)の方がいいのでは?
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2006/12/01 13:27

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

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

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • 日本酒の日にちなみ知っておきたい基礎知識と海外での日本酒事情を専門家に聞いてみた!

    皆さんは日本酒が好きだろうか? 普段お酒を好んで飲む人の中にも、「日本酒はキツくて苦手」と敬遠してしまう人もいるだろう。それどころかそもそもとしてお酒は飲むのが強くない人は、「日本酒はニオイだけでもう...

  • 【100均グッズで手軽に始める!】ジェルキャンドル作り

    ぷるぷるとした、透き通ったゼリーのようなキャンドル。その名を「ジェルキャンドル」といい、ガラスの容器の中にはカラフルな砂や可愛い飾りが入って売られており、職人技のように見える見た目だが、実は自宅で簡単...

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ