Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4444 / 13644 ツリー ←次へ | 前へ→

【56628】親Formから表示した子Formの値を親Formで使いたい rensougame03 08/6/25(水) 22:59 質問[未読]
【56634】Re:親Formから表示した子Formの値を親Form... kanabun 08/6/26(木) 9:21 発言[未読]
【56648】Re:親Formから表示した子Formの値を親Form... rensougame03 08/6/26(木) 22:32 お礼[未読]

【56628】親Formから表示した子Formの値を親Formで...
質問  rensougame03  - 08/6/25(水) 22:59 -

引用なし
パスワード
   勉強中の者です。よろしくお願いします。

UserForm1から表示したUserForm2で(この時にUserForm1は表示されたままの状態です。)UserForm2にある3個のチェックボックスをユーザーが選択し、同FormにあるコマンドボタンをクリックするとUserForm2が閉じられ、先のユーザーが選択したチェックボックスがどれか(複数選択あり)という情報をUserForm1で使いたくて、とりあえず以下のように標準モジュールでPublic変数を用意して、情報をUserForm1でも呼び出せる形にしました。


標準モジュールの宣言セクション

 Public SelectedCB As Variant

標準モジュール内のコード

 Sub 親フォーム表示()

  UserForm1.Show

 End Sub


UserForm2内のコード

 Private Sub CommandButton1_Click()

  Dim CBarray() As Variant
  Dim i As Integer
  Dim n As Integer

  For i = 1 To 3
    If Me.Controls("CheckBox" & i).Value Then
      ReDim Preserve CBarray(n)
      CBarray(n) = i
      n = n + 1
    End If
   Next

  SelectedCB = CBarray

  Unload Me

 End Sub

本を見ると値を返すには、Function、Property プロシージャを使うと
あるのですが、それらのプロシージャはこのようなケースの場合には、いったい
どう使えばいいのかわかりません。
特にPropertyは・・・・・。

どなたか教えて下さい。よろしくお願いいたします。

【56634】Re:親Formから表示した子Formの値を親Fo...
発言  kanabun  - 08/6/26(木) 9:21 -

引用なし
パスワード
   ▼rensougame03 さん:

UserForm2 のCheckBoxの数が3個と決まっているのなら、
共有変数の要素数もその数にあわせておけばよいと思 い ま す (^^

'-------------------------------------- Module1
'UserForm2の3つのCheckBoxの値を格納する共有変数
Public gCheckedValue(1 To 3) As Boolean

'-------------------------------------- UserForm1
Private Sub CommandButton1_Click()
 UserForm2.Show 0      'UserForm2 の表示
End Sub

'〔参考〕共有変数のCheck状態表示する例
Private Sub CommandButton2_Click()
 Dim i As Long
 Dim ss As String
 For i = 1 To 3
   ss = ss & i & vbTab & gCheckedValue(i) & vbCr
 Next
 MsgBox ss
End Sub

'-------------------------------------- UserForm2
Private Sub UserForm_Initialize()
 Dim i As Long    '表示するときは直前のCheck値を表示
 For i = 1 To 3
  Me.Controls("CheckBox" & i).Value = gCheckedValue(i)
 Next
End Sub

Private Sub CommandButton1_Click()
 Dim i As Long    '値をグローバル変数に格納して閉じる
 For i = 1 To 3
  gCheckedValue(i) = Controls("CheckBox" & i).Value
 Next
 Unload Me
End Sub

【56648】Re:親Formから表示した子Formの値を親Fo...
お礼  rensougame03  - 08/6/26(木) 22:32 -

引用なし
パスワード
   ▼kanabun さん:

書き込みありがとうございました。
大変参考になりました。

4444 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free