前提・実現したいこと
お世話になります。
VB.NETにおけるクラスとモジュールに関してです。
VB.NET初心者です。
現在Windowsフォームアプリケーションでソフトを作成中です。
面倒な構造ですが、フォームが多岐にわたっているため、下位モジュール、上位モジュール
内に関数を作成し、それらをフォームクラスに反映させています。
今回お聞きしたいことは、クラスで定義した値をモジュールで使用できないのか です。
クラス上でPublicで設定した変数をモジュール上で使用したいのですが、
できませんでした。やりたいことは下記例のようなことです。
VBNET
1Public Class FormA '値を設定するためのフォームクラス 2public a as integer 3a = TextBox1.text 4end Class 5 6Public Module Kansu1 '下位関数 7Public Sub kan1(Byval c as integer) 8Dim b as integer 9b = a * 2 10end Sub 11 12Public Module Kansu2() '上位関数:下位関数を使用している 13Public Sub kan2() 14kan1(a) 15end Sub 16 17Public Class FormB '上位関数を用いて演算結果を表示するフォームクラス 18Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 19Dim d as integer 20d = kan2 21TextBox2.Text = d 22end Sub
※例のため意味のない関数になっています、、、
一応図にもしておきます。

クラスもモジュールも含めてグローバル変数を設定できるわけではないのでしょうか。
(クラスで設定したグローバル変数がモジュール上でも同じ名前で変数設定できて困惑しています、、、)
つたない説明で申し訳ありません。
宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
コードはマークダウン記法を用いて読みやすくするようにしてください。
https://teratail.com/help/question-tips#questionTips3-5-1
https://teratail.com/questions/238564
あと、VB.NETと昔のVB(VB6)は別モノです。
回答ありがとうございます。
VBと表記するとVB6を示すことになってしまうんですね、、、
知りませんでした。。。
> 回答ありがとうございます。
> VBと表記するとVB6を示すことになってしまう
「回答」ではないのですけれどもね。単なる質問文の修正依頼です。
"VB"(のタグ)はまぎらわしいですが、"Visual Basic”に関してはExcelマクロなどで使う"VBA"(Visual Basic for Applications)や、クラシックASP、WSHで使う"VBScript"もあります。違いを意識するのは他の閲覧者や回答者にとっても大事です。
知らないとこのへん結構紛らわしいですよね。
どれか一つしか触った事ない人だと、なんじゃそりゃってなるのは正直分からなくもない…
>@radianさん
> どれか一つしか触った事ない人だと、なんじゃそりゃってなるのは正直分からなくもない…
私も実はそう思っています。回答せずにコメントのみで細かいことを書きたくもないのですけど、間違いや誤解が生じそうなことを放置しておくわけにもいかないでしょうし。
お二人ともありがとうございます。
質問文の修正をしました。
今後は気を付けて質問しようと思います。
> 質問文の修正をしました。
もうひとつ指摘させてもらったつもりでしたが、コードの整形(マークダウン記法を使う)は無し、でしょうか?
こういう風に皆さんコード書いていたんですね、、、
勉強になります。
回答2件
あなたの回答
tips
プレビュー