• ベストアンサー

Form1.vbに書いた定数をModule1.vbでも使うには?

Form1.vbには Public Class Form1Form Public Const 横幅 As Long = 1200 と書いています。 そして、 Module1.vbに Sub 共通_横幅() Form1Form.Width = 横幅 End Sub と書くと、 「名前 '横幅' は宣言されていません。」 となります。 Form1.vbの Public Class Form1Formの上に 「Public Const 横幅 As Long = 1200」 を移動しても 「名前空間のステートメントが無効です。」 となります。 どうすれば Form1.vbで宣言した定数をModule1.vbで使用することができるのでしょうか? スコープを「Public」にしただけではだめなのでしょうか? Class Form1Form.Width = 横幅 にしてもだめでした。 よろしくお願い致します。

  • fsjkls
  • お礼率99% (430/432)

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

試しにですが、 'Form1.vbに Public Const 横幅 As Long = 1200 'Module1.vbに Module Module1 Sub aaa() MsgBox(Form1.横幅) End Sub End Module としたら表示されました。

fsjkls
質問者

お礼

できました!ありがとうございます。

その他の回答 (3)

回答No.4

既に回答が出ているかもしれませんが小出しネタを・・・ VB.NETだと過程して書きます。 ■名前空間について 店に例えとして説明します。 Form1.vb :A店 Module1.vb:B店 全く別の店とします。 A店に商品Cが存在するとして、B店に行って「商品Cを下さい!」といっても無理があります。 ここでA店とB店が業務提携をしてお互いの商品を扱えるようにしたとします。←これが参照設定や名前空間などにあたる そうすると先ほどまでB店で買うことができなかった商品Cを買うことができます。 但し、現状では商品CはA店にしかありません。 なのでB店で買えるといっても直ぐには買えません。 B店でも商品Cを置くようにします。←Propertyなどを用意する。 (A店の物を持ってくるという意味です。) Module1.vbにPublic Property Form1() As Formを作成してForm1.vb側でデータを設定してあげる。 こうすることでForm1.vbのPublicの宣言を利用することができます。 長々とネタ書きしてすみませんでした。

fsjkls
質問者

お礼

とてもわかりやすいです。 こういう例えはすごく好きです。 ありがとうございます。参考になりました。

回答No.3

> スコープを「Public」にしただけではだめなのでしょうか? スコープをPublicにした上で、参照時に「クラス.定数」という形にしないといけません。 [ Form1.vb ] Public Class Form1Form Public Const 横幅 As Long = 1200 End Class [ Module1.vb ] Module Module1 Sub 共通_横幅() Form1Form.Width = Form1Form.横幅 '←修正箇所 End Sub End Module > Form1Form.Width = 横幅 「『横幅』という定義はModule1に書かれている」ことになるので「名前 '横幅' は宣言されていません。」と言われます。 > Form1.vbの > Public Class Form1Formの上に > 「Public Const 横幅 As Long = 1200」 > を移動 定数の宣言はClassやModuleの外側に書くことは出来ないので「名前空間のステートメントが無効です。」と言われます。

fsjkls
質問者

お礼

うーん、 ちょっとうまくいきませんでした、、、 「名前空間のステートメントが無効です。」については理解できました。 ご回答ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>Form1.vbで宣言した定数 Publicで>Public Class Form1Formの上に宣言したのなら、Form1.vb ではその宣言を削除しないとだめじゃないかな。削除していての質問ですか?

fsjkls
質問者

お礼

あまりよくわかっていないまま質問していました。 ご回答ありがとうございます。

関連するQ&A

  • Form1上にあるTextBox1を Module1.vbから参照したい

    初歩的なことで、すいません・・・ 以前、覚えていたのですが、ド忘れしてしまいました。 タイトルどおりで、Form1上に配置したTextBox1を、Module1.vb内に書いた関数内で用いるには、TextBox1のみの記述だと、ビルドエラーとなります。 他のモジュールから、Form1上に配置したTextBox1を見るには、どのように指定するのか、ご教授下さい。 よろしくお願いします。 ----------以下だと"TextBox1"のところでエラーとなる---------- <Module1.vb> Sub xxxxx()  If TextBox1.Text = "0" Then   ・・・・  End If End Sub

  • Public 定数が認識されない

    vb2010を使用しています。form1でPublic Const PASS_WORD As String = "12345"と宣言します。form1から呼び出したウィンドウform2では、次のようなコードです。 Public Class form2 Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles btnOK.Click Dim f As form1 f = Me.Owner If Me.TextBox1.Text = PASS_WORD Then Me.DialogResult = DialogResult.OK End If End Sub End Class このとき「PASS_WORDは宣言されていません。」というエラーが発生します。form1でPublicで宣言してるので、なぜこのエラーが出るのかわかりません。どなたか御教示いただけると幸いです。

  • VB2008 Formを関数の引数にする

    お世話になります VB2008で開発をしています Formを2つ作成し どちらも同じ名称のテキストBOX(TextBox1)コントロールを貼り付けています Publicの関数でそれぞれのFormに値をセットしたいのですが 「'TextBox1' は 'System.Windows.Forms.Form' のメンバではありません。」 とエラーが発生してしまいます 初歩的な質問で申し訳ありませんが ご助言頂けると助かります 宜しくお願い致します ソース: --------------------------------------------------- Module Module1 Public Sub Main() Dim Form1 As New Form1 Dim Form2 As New Form2 SetValue(Form1) SetValue(form2) End Sub Private Sub SetValue(ByVal obj As Form) obj.TextBox1 = "TEST" End Sub End Module ---------------------------------------------------

  • VBでModule1からForm1のコントロールを操作したい

    VB.NETでForm1のProgressBarをForm1.VBからではなく外部Module1.vbのサブルーチンから操作する方法はありませんか。"Dim Form1 as New Form1"などとするともうひとつフォームが開いたりしてうまくいきません。現在、下記の様にしてもうひとつ別のForm2を開いてプログレスバーを表示しております。 できるなら、Form1だけで済ませたいと思っております。 勉強不足でわかりません。どなたか教えてください。 Form2.Show() Form2.ProgressBar1.Minimum = 0 Form2.ProgressBar1.Maximum = 学習回数 Form2.ProgressBar1.Visible = True For 繰り返し = 1 To 学習回数 Form2.ProgressBar1.Value = 繰り返し Form2.lbl解析中.Text = 繰り返し Form2.Label1.Update() Form2.lbl解析中.Update()      ****処理**** Next

  • Formを動かせるようにしたい

    お世話になります。 OS XP PRO  VB6(SP5)で開発しています。 ディスプレイのサイズによりFormを動かせたり固定させたりしたいのですが、 規定値は固定にしたいのでFormプロパティのMoveableはFalseにしてあります。 下記のようにプログラミングしたのですが固定されたままです。 Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Private Declare Function GetSystemMenu Lib "user32" (ByVal _ hwnd As Long _ , ByVal bRevert As Long) As Long Private Declare Function RemoveMenu Lib "user32" ( _ ByVal hMenu As Long, ByVal nPosition As Long, _ ByVal wFlags As Long) As Long Private Declare Function DrawMenuBar Lib "user32" ( _ ByVal hwnd As Long) As Long Private Const MF_BYCOMMAND = &H0 Private Const SC_MOVE = &HF010 Private Sub Form_Load() Dim kk As Long kk = GetSystemMenu(.hwnd, bb) Call RemoveMenu(kk, SC_MOVE, MF_BYCOMMAND) Call DrawMenuBar(.hwnd) End Sub アドバイス頂きたくよろしくお願いします。 以上です。

  • VB2008 Form間の計算について

    VB勉強中のものです。 次のようにプログラムを作成したいですので よろしくお願いします。 要望: 1 From2のTextbox1 or Textbox2に"2001/05/05"ような書式で日付を入力 2 RadioButton1かRadioButton2の選択して 3 Form1の「DateTimePicker」を利用して、日数の差を計算し、 Form2の label3に結果を表示させる 例: From2のTextbox1 = 2001/01/01 Form1の「DateTimePicker」 = 2002/01/01 RadioButton1を選択したら、 Label3内に " 誕生日から生まれて365日となりました" という結果が出れば、問題がないです。 ------------ Form 1 --------------------- Public Class Form1 Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click 'labelをクリックして、form2を開く Dim frmTmp As New Form2 frmTmp.ShowDialog() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim intdate As Integer intdate = DateDiff(DateInterval.Day, DateTimePicker1.Value, Now) Label1.Text = "誕生日から生まれて" & intdate & "日となりました" End Sub End Class -------------------------------------------- -------------Form 2 ------------------------ Public Class Form2 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked = True Then Label3.Text = "*******わからない部分*******" End If End Sub End Class ----------------------------------------------------- 以上

  • Form1.vbをイベントなしで動作させるには?

    VB2005初心者で困っています。 Menu.vbとForm1.vb, Form2vb, Form3.vb・・・を作り、Menu.vbのButton1_ClickでForm1.Show()としてForm1.vbに移行し、次にForm1のButton1_clickイベントでExcelからDataを読み込んでGraphを書かせています。(この時は問題なく動作しています) これを、Form1に移行したらすぐにGraphを表示しようとして、Form1.vbの Public Class Form1 Private Sub Button_Clic(Byval sender As System・・・・・)Handles Button1.click   Dim g As Graphics   ・・・・ を変更して、  Private Sub Form1_Load(Byval sender As System・・・・)Handles MyBase.load Me.Show() Dim g As Graphics   ・・・・ と、しましたが、一瞬Graphは表示しますが、すぐに消えます。 また、罫線はまったく表示しません。 Button_ClickイベントなしでForm1を動かすにはどうすればよいのでしょうか?

  • form1 から form2 へのデータの受け渡し方

    まだまだ勉強中の初心者なのですが、お願いします。 今同プロジェクト内の form1 から form2 へデータを渡そうとしているのですが、 'form1 '------------------------------- Private Sub Command2_Click() Form2.m_Get.ites = 1 Form2.Show (1) End Sub 'form2 '-------------------------------- Public m_iGet As TES 'Module1 '-------------------------------- Type TES ites As Integer End Type 理想はこのようにform2の構造体へform1から値を代入したいのですが。 コンパイルエラー 定数、固定長文字列、配列、ユーザー定義型および Declareステートメントはオブジェクトモジュールの パブリックメンバとして使用できません。   ということはこの渡し方は無理なんですね。 配列も無理ですね。 なるべくグローバル変数でのやり取りはしたくはないのですが、、、。 何か他にいい方法ありますか? よろしくお願いします。

  • VB.NET Form1からForm2を開いたり閉じたりする方法

    VB.NET2005でForm1にあるCheckBoxをTrueにするとform2をモードレスフォームとして開き、CheckBoxをFalseにするとform2を閉じる方法がわかりません。また、form2の[×]で閉じた時にはForm1にあるCheckBoxをFalseにする方法がわかりません。 '----------------------------------- Private Sub CheckBox2_CheckedChanged ・・・   Dim f_cnt As Integer   Dim form2 As New Form2()   f_cnt = My.Application.OpenForms.Count   If CheckBox1.Checked = True Then     If f_cnt = 1 Then form1.Show() 'モードレスフォームとして表示する   Else    form2.Close() ←閉じない   End If End Sub '-----------------------------------

  • vb2003.netでpicturebox に画像を表示させるにはどう

    vb2003.netでpicturebox に画像を表示させるにはどう vb2003.netでpicturebox に画像を表示させるにはどうするのですか。 picturebox に画像を表示させるにはどうするのですか。 momo1.jpgの画像を一度変数gaに記録してからpictureboxに表示させようとしました。 うまくいきません。どこが間違っているのでしょうか。pictureboxのプロパティーもいろいろ変更しましたが結局はだめでした。 Module Module1    Public ga As String End Module Public Class Form1 Inherits System.Windows.Forms.Form     ga = "momo1.jpg"     PictureBox1.Image = System.Drawing.Image.FromFile("c:\vbnet\cai\ga") End Sub End Class 投稿日時 - 2010-09-17 20:40:44