初めてプログラミングを行おうと思っています。
そこで、VBを使って行おうと思っているのですが、
全てが初めてなので、まずは本を読んでいるところです。
本の中で、サブルーチンやプロシージャという言葉がよく出てくるのですが、サブルーチンは処理のかたまり、プロシージャは処理の命令と軽く考えていたのですが、本の中に、『サブルーチンにはFunctionプロシージャとSubプロシージャの2種類がある』と書いてあり、それ以来、私にはサブルーチンもプロシージャも同じものに思えてしまいます。人に聞いたところ、『全然別ものだよ』という答えしかありませんでした。これは、どう違うのでしょうか??
また、SubプロシージャのSubはサブルーチンを示すとあり、益々、理解できなくなりました。
恐れ入りますが、サブルーチン、プロシージャ、Functionプロシージャ、Subプロシージャとは何かについて、おわかりの方がいらっしゃいましたらご教授ください。
宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
「サブルーチン」とは、処理のまとまりのことです。
これはあくまでもVBだけの概念ではなく、プログラミング言語の一般的な概念です。
つまり、何らかの論理的な処理のまとまりを決めた単位です。
例えば、「データベースを更新するサブルーチン」「ソートをを行うサブルーチン」という具合に使います。
一方、「プロシージャ」はVBのみの概念です(他の言語にも「プロシージャ」はありますが、ここでいいたいのは言語特有の概念であり、一般概念ではないという意味)。
そしてその「プロシージャ」にはFunctionとSubの2種類があります。
「プロシージャ」の意味は、一般概念である「サブルーチン」をVBでは「プロシージャ」という単位(概念)で表現します、ということです。
ですから、「サブルーチン」は一般概念、「プロシージャ」はVB内での「サブルーチン」を表現した概念です。
つまり、「サブルーチン」≒「プロシージャ」と考えて差し支えありません。
違うと言えば違う部分もありますが、少なくとも『全然別ものだよ』というわけではなく、殆ど同じと考えてかまいません。
「ヘッドホンステレオ」と「ウォークマン」の違いのような一般概念と商品名の違い、あるいは、「ステレオ」と「コンポ」のような一般概念ではあるけれど表現の仕方の違い、みたいに考えてください。
いずれにせよ、あまり気にしない方がいいと思います。
ちなみに、「Functionプロシージャ」と「Subプロシージャ」の違いは、戻り値を返すか返さないかだけで他は一緒です。
なるほど!!
「ヘッドホンステレオ」と「ウォークマン」、「ステレオ」と「コンボ」ですか。
とても理解しやすかったです。
プログラミングでの概念とその言語のみの概念があるんですね。
どうもありがとうございました。
No.6
- 回答日時:
#4です。
意味がわかってないものですが。エクセルVBAで標準モジュールに
Function aaa()
Range("a1").Interior.ColorIndex = 6
aaa = 123
End Function
と入れて、実行すると、A1はセルが黄色になります。
シートのB1に=aaa()と入れるとB1は123が入りますが、A1は黄色になりません。
エクセルVBAではユーザー関数は値を返すほかの、色を付けるとかは、関数では出来ないと説明を読んでいましたので、結果はその通りなんですが、良く判らない。
右辺に記入して、下記test01を実行しても、色がつく。
Function aaa()
Range("a1").Interior.ColorIndex = 6
' aaa = 123
End Function
Sub test01()
Range("b1") = aaa()
End Sub
No.5
- 回答日時:
> ちなみに、「Functionプロシージャ」と「Subプロシージャ」の違いは、戻り値を返すか返さないかだけで他は一緒です。
補足です。
(意味がわかっておられない方もいらっしゃるようなので・・・)
「Functionは戻り値を返せるが、Subは返せない」
の意味は、
[ Public | Private ] Function As Type '○
と記述することはできるが、
[ Public | Private ] Sub As Type '×
と記述することはできない、ということです。
また、値を返さないSubは代入式の右辺式に記述することはできません。
Dim retVal As Long
retVal = MsgBox(Args ....) '○ MsgBox関数の返値を代入
は問題ないが、
retVal = Worksheet_SelectionChange(Arg) '× 構文エラー
とは書けない、という意味です。
No.4
- 回答日時:
>、「Functionプロシージャ」と「Subプロシージャ」の違いは、戻り値を返すか返さないかだけで他は一緒です
エクセルVBAでは、Functionプロシージャ内では文字のフォントの色を変えるなどは出来てしまいました。
Function aaa()
Cells(3, 1).Font.ColorIndex = 3
End Function
Function bbb()
Cells(3, 1).Insert (xlDown)
End Function
値を返しているのでしょうか。何か私の思い違い?
No.2
- 回答日時:
まず、ルーチンとは、何らかの処理を行なう一連のプログラムコードのことです。
そのルーチンを機能単位でまとめ、関数などとして独立させたものをサブルーチンと呼びます。
そのサブルーチンをさらに細かく分類すると、Subプロシージャと関数プロシージャというものがあるということです。
ルーチン(プログラムコード)
|
サブルーチン(機能別にまとめたもの)
| |
Subプロシージャ 関数プロシージャ
(戻り値があるもの)
大雑把にこんな感じですけど、わかりましたでしょうか?
簡単なソースを作って同じ処理しているところや外だしにできそうなものなどを関数化したりやっているうちに飲み込めてくるとは思うのですが。
http://f1.aaacafe.ne.jp/~zahyou/vbc/subfun.htm
参考URLはデジタル用語辞典です。
色々役立つと思いますので、参考にされてください。
参考URL:http://yougo.ascii24.com/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- 情報処理技術者・Microsoft認定資格 (パイプライン処理)基本情報技術者の演習問題について 1 2023/03/11 17:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Perl perlのrequireの動き方についての質問 2 2022/10/30 17:27
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外処理のフローチャートの記...
-
ACCESSのVBAでPrivate Sub ~en...
-
モジュールとサブルーチン
-
オフコン(富士通Kシリーズ)...
-
Excel VBAで、ユーザーフォー...
-
fortran95実行エラー
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
ユーザー定義関数に#NAME?が返...
-
'Range'メソッドは失敗しました
-
「デバイスは PRN を初期化でき...
-
VBでグローバル変数を宣言するには
-
VBSがコンパイルエラーになりま...
-
VBのフォームモジュールと標準...
-
「Perl Command Line InterPret...
-
VBA This Workbookモジュール...
-
現在アクティブなフォーム名を...
-
VBAで旧字体を異字体に一括で変...
-
【vba】フォームに書いてあ...
-
標準モジュールを削除したい。(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォー...
-
モジュールとサブルーチン
-
perlの構文でカンマの意味が分...
-
COBOLで、Shellを起動するには?
-
ACCESSのVBAでPrivate Sub ~en...
-
GOSUB命令とは
-
サブルーチンを認識しません。
-
エクセルVBAでサブルーチン...
-
ExcelVBA AddinでOnAction
-
初歩的な質問なのですが、サブ...
-
Excel VBAから利用できるフリー...
-
VBAのサブルーチンとプロシージ...
-
VBAで2重のDoLoop関数から抜け...
-
Attempt to free unreferenced ...
-
オフコン(富士通Kシリーズ)...
-
初心者です。Perlではどんな時...
-
”:”がいっぱいの文について。
-
サブルーチンやif分以外での中括弧
-
fortran95実行エラー
おすすめ情報