• ベストアンサー

サブルーチン(共通の処理)の作り方

VB6.0の時までは、標準モジュールやフォームモジュールにサブルーチン(共通の処理)を作って、他のフォームモジュールから呼び出しができるようになっていましたが、VisualBasic2005ではできないのでしょうか?共通のサブルーチンを作成する方法を教えてください。よろしくお願いします。

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

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

とりあえず、こんな感じにします・・・という例を Module CommonFuncTest Public Class CommonFuncSample    Shared Function func1() As String      Return "1"    End Function    Shared Function func2() As String      Return "2"    End Function    Shared Function func3() As String      Return "3"    End Function End Class End Module 実際に使うときには、 String x = CommonFuncSample.func1() String y = CommonFuncSample.func2() String z = CommonFuncSample.func3() の様に使います。 ANo.1さんがおっしゃるように、直接Sharedを書けば 別にClassを作る必要は無いんですが、 ANo.2さんがおっしゃるように、基本的にClass構造を持っている事を理解することも必要なので、このようにしておきます。

ringocyan
質問者

お礼

ご丁寧な回答をいただき、心から感謝申し上げます。本当にありがとうごいました。助かりました。

その他の回答 (2)

回答No.2

一応技術者向けのカテゴリなので。。。 もし趣味でやっているのでないのであれば、クラスを作成する事をおすすめします。 オブジェクト指向や構造化、結合度や凝縮度、インスタンス、参照、GC等。あまりに知らなさ過ぎる方に作成して欲しくはないのが本音の所です。。。

ringocyan
質問者

お礼

どうもありがとうございました。勉強します。

回答No.1

参考urlを参照してみてください。 たぶん、VB.NETの全部クラスになっているところが、VB6と比べて違和感を感じるところだと思いますが、Sharedキーワードをつけることでクラスであることをあまり意識する必要がなくなり、クラスのインスタンスを作成することなく、サブルーチンにアクセスできるようになるので やりたいことができると思います。 Public Shared Sub ~

参考URL:
http://www.atmarkit.co.jp/fdotnet/vb6tonet/vb6tonet32/vb6tonet32_02.html
ringocyan
質問者

お礼

どうもありがとうございました。助かりました。

関連するQ&A

  • モジュールとサブルーチン

    モジュールというとソースの中の機能の単位と思っていたのですけれども、共通モジュールとかは一つのプログラムでもモジュールと呼んでいます。プログラムになればサブルーチンだと思うのですが、モジュールとサブルーチンの違いは何ですか?

  • VBのフォームモジュールと標準モジュールの使い分け

    VBのフォームモジュールと標準モジュールの使い分けが今一つわかっていません。 フォームモジュールとは、フォーム(画面)上で起こったイベント(例えば、ボタンをクリックした時とか、ユーザーが行を選択したりだとか)の処理を、記述するところと解釈しています。 標準モジュールは、フォームが2つ以上あって、その2つが共通する処理(関数)などを、記述したり、フォームが1つでも、同じ処理を繰り返す場合、その処理を標準モジュールに書いたり・・・・という解釈をしています。 あってますでしょうか? フォームが一つしかない場合、もしくは2つあっても、あまり共通する処理がない場合、なんかは標準モジュールはあまり使わないのでしょうか? それとも、フォームが1つとかでも、今後のメンテの事など考慮して、標準モジュールを作ってそこにグローバル変数なんかで処理を書いた方がよいのでしょうか? どなたか、教えてくださいませんか? いろいろBBSなどで見てみるんですが、いろいろ書いてあって、どれが理想か わかりません。よろしくお願いいたします。

  • Excel VBA サブルーチン関連

    複数のマクロが標準モジュールに書かれているとします。(例:Module1~Module10) このモジュールを順番に実行するマクロを作成したいのですが、モジュールの名前を指定してサブルーチンコールは出来ないようです。 全部のモジュールを数珠つなぎにして1つのモジュールにまとめる方法は気が進みません。 モジュールの名前を指定してサブルーチンコールするようなスマートな方法はないでしょうか?

  • VBの実行時の処理の流れ(仕組み)について教えて下さい

    WindowsXp-Pro上でVB.NET2003を使用しています。VB.NET初心者です。 VB.NETはコーディング後デバッグを行いエラーがなければ実行される訳ですが、実行時の処理の流れと言うか、仕組みについてご伝授頂きたいと思います。 VB.NETにおいてはオブジェクト指向が進んでおりコーディング作業時は全体の流れを考えなくても、クラス内でのインスタンスやサブルーチン・関数ルーチン、フォームロード時の処理、モジュール内での処理等のコーディングのみを考えていれば実行できるようになっています(少なくとも今まで私が作成したプログラムはそうでした)。しかし、色々なサンプルプログラムを作っているとこれはクラスで指定した方が良い処理とかモジュールで指定した方が良いのではと思うことが多々あります。 プロジェクトやフォーム、クラス、モジュール、コンポーネントクラス、ユーザーコントロール、データフォームウィザード、継承コントロール (これらはVisualStudioの「プロジェクト」メニューをクリックした時の項目です) 等の処理の順序が判っていればもっと効率的な処理を適材適所に配置できるのではないかと思います。 これらをコーディングレベルで結構ですので機械内での処理の順序をご説明頂ければ幸いに思います。現在のところコンピュータは並列処理はできないので必ず優先順位がつくと思うのですが、未熟な為VBの全体像がつかめず処理の流れも判らずにいます。 よろしくお願い致します。

  • 標準モジュールを共通で使うには?

    いつもお世話になります。VB2005です。 ソリューションには最低1個のプロジェクトが存在します。それに複数個の標準モジュールを追加してプログラム全体を構成しています。 ここで、独立した複数個のソリューション(プロジェクト)をつくり、それぞれから共通に利用できる標準モジュールを利用することがあります。この標準モジュールに何か変更が生じたときは、それらを利用しているプロジェクト内へファイルコピーして、後日の不一致を防止しています。 過去の古いVBでは、特定のホルダーに標準モジュールを置いておくことで共用ができていたと記憶しています。ですから、ある編集中プロジェクト内の標準モジュールに変更があっても、他のプロジェヘクトへ自然に反映されていました。 VB2005においても何かの設定で同様のことが可能でしょうか? よろしくお願いします。

  • VB2008で親フォームから子フォームを開いたときの処理で

    VB2008で親フォームから子フォームを開いたときの処理で 質問させて頂きます。 親フォームから子フォームを開いて、 子フォーム画面ロード時に、TreeViewにノードを追加する処理を行おうとするのですが、 ノードの追加ができません。 親フォームから子フォームの呼び出しの部分 Using frmAct As New form2 frmAct.ShowDialog() end using 子フォームLoad処理 Private Sub F_Actresult_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call MP_hogeload() ←別のモジュールからサブルーチンを呼び出してノード処理を追加させる。 End Sub 外部サブルーチン Public Sub MP_hogeload() With form2 .trehoge.Nodes.Add("hoge") end with end sub 同じ子フォーム内に記述している場合は問題なく追加できています。 この開き方の場合、別のモジュールでノードを追加させる方法を探しています。 よろしくお願いいたします。

  • UserFormをサブルーチンに出来るか

    頓珍漢な質問かもしれませんが、何分ご了承下さい。 標準モジュールで記述時、UserFormをサブルーチンとして呼び出す事は出来ないですか。 プログラムの途中に、複数項目を入力させたいのです。 InputBoxは一つしか入力させられない様だから、UserFormならと、思ったのですが。 Private付プロシージャは、同じモジュールのプロシージャからしか呼び出せないのでしょうか。 宜しくお願い致します。

  • 長いソースをサブルーチンで分割

    環境:VS.NET 2003 言語:VB.NET 1フォームにたくさんボタンを置いて、その機能を コーディングしていると、どうしてもそのフォーム、From1.vbの 行数が増えてしまって、見にくくなってくるのですが、 一部を別vbモジュール(?)に分割することは可能なのでしょうか? 別モジュールに書くと、Me.Button1等ができなくなりますが、 引き継ぐ方法ももしありましたらご教授ください。

  • サブルーチンの呼び出しに変数を使うには。

    初心者なので頓珍漢な事をお聞きしているかもしれないですがお願いします。 htmlページの分岐を行いたいと思ってまして、1ページ、1サブルーチンにしてhtmlを埋め込んでいます。その分岐の呼び出しに以下のような、命令で処理したいと思ったのですが上手くいきません。 &html$FORM{page}; 舌足らずな質問の仕方だと承知なのですが、サブルーチンの呼び出しに変数を使うにはどうしたらよいのでしょうか?よろしくお願い致します。

    • ベストアンサー
    • Perl
  • サブルーチンの処理

    すみませんが教えてください。 往年のF-BASICやN88などでは 10 INPUT A 20 IF A=1 then gosub 100 ELSE PRINT "Aは1ではありません!" 30 END 100 PRINT A 110 RETURN こんなふうだったかサブルーチンが使えたかと思います。 これをVB.NETでかくと Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim A As Integer A = TextBox1.Text If A = 1 Then ここにどういれたらいいでしょう Else MsgBox("Aは1ではありません") End If End Sub End Class になるとおもうのですが、Thenのあとサブルーチンへ飛ばせるのでしょうか? それとも根本的に考え方が違うのでしょうか? 初歩的な質問ですみませんが、Timer1.Enable = Trueを使った処理以外 入門書に載っていないので、どなたかお教えいただけませんでしょうか。