お願いします。
質問はformが三個ありまして、form1のボタンを押すとform2に飛びます。
それでform2のボタンを押すとform3に飛ぶというのを最初のフォームのプログラムに書きたいのですがどうやればいいのかわかりません。
質問がわかりにくいですがぜひお願いします。
> 最初のフォームのプログラムに書きたい
最初のフォームって Form1 ですか?
Form2 や Form3 にはコードを1つも書かないということですか?
それは無理です。
少なくとも Form2 や Form3 には
Command1_Click イベントプロシージャが必要になります。
すいません。最初のフォームはform1です。
やっぱり無理ですか・・・
自分が作りたいのはformが全部で10個あり、それをランダムで呼び出して表示したフォームは二回目は開かないようにするというものです。
それで最後の一個になったらプログラム終了というものです。
vbはじめたばかりなのでちょっとつかめてませんね。色々と。
上に書いたことでなにか参考になるようなことがあれば情報ぜひお願いします。
プロパティとかで Form の名前だけ受け渡すならできると思う。
…まあ、Form 自体を引数にしても良いんだけど。
どのフォームに飛ぶかは最初のフォームに書かないで
モジュールに書けばいいのでは。
ランダムとかは自分で考えてほしいですが、とりあえず
最初の質問の回答の一つという事で…
フォームは MainForm Form1 Form2 …という名前で
作成してください。あとは適当に数を増やしても動作
するでしょう。
'//////////////////////////////////////////////////////////
'MainFormコード
Option Explicit
' 公開メソッド
Public Sub Child_Click(ByVal ChildFormsName As String)
Dim i As Integer
For i = 1 To Forms.Count - 2
If ChildFormsName = "Form" & CStr(i) Then
Forms_Show (i + 1)
End If
Next i
End Sub
' ボタン押下イベント
Private Sub Command1_Click()
Forms_Show 1
End Sub
' Form表示用
Private Sub Forms_Show(ByVal FormNumBer As Integer)
Dim FormX As Form
For Each FormX In Forms
With FormX
If .Name = "Form" & CStr(FormNumBer) Then
.Show vbModeless
Exit Sub
End If
End With
Next
End Sub
Private Sub Form_Load()
' 全ての Form を Load しておく
Load Form1
Load Form2
Load Form3
' Load Form4
' Load Form5
End Sub
'//////////////////////////////////////////////////////////
'//////////////////////////////////////////////////////////
'Form1〜?コード(共通)
Option Explicit
' ボタン押下イベント
Private Sub Command1_Click()
MainForm.Child_Click (Me.Name)
End Sub
'//////////////////////////////////////////////////////////
みなさんどうもありがとうございました。
非常に参考になりました。
またよろしくお願いします。