|
▼gako さん:
おはようございます。
>質問させていただいてもよろしいでしょうか。
>UserForm2を出すための「UserForm1.Show」のコードを入れる
>必要は無いのでしょうか。
[#40467] にも少し記述しましたが、このご質問には、
Userform1とUserform2の関係が明確に記述されていません。
ちょっと考えると、
1 モーダルモードでUserform1から、何かのタイミングでUserform2が呼び出される
(Showメソッドが使われる)場合
2 逆にgako さんが仰られているようにモーダルモードでUserform2から、何かのタイミングでUserform1が呼び出される(Showメソッドが使われる)場合
3 メインプロシジャーからモーダレスモードでUserform1,Userform2が表示される場合
Userform1とuserform2の関係によって、今回の事例ではわずかですが、
それでもコードの記述を変えなければならない箇所が出てきます。
今回私が提示したUserform2のコマンドボタンのクリックイベントプロシジャーは
予めUserform1は表示されているという想定でのコードです。
gako さんは上記の「2」のような想定をされていたのでしょうね?
この質問を読んだ人によって想定が様々ですよね?
だからこそ、Userform1とUserform2の関係をこの質問を読んだ人が
少しでも同一の想定ができるような記述が必要なんです。
上記の「2」を想定して考えると、
Userform2のモジュールに
'=============================================
Private Sub CommandButton1_Click()
Dim chkstr() As String
Dim cnt As Long
cnt = 0
Dim idx As Long
For idx = 1 To 20
If Controls("checkbox" & idx).Value Then
'チェックボックスのコントロール名は
' checkbox1とかcheckbox2・・・・checkbox20に設定されていると
' とします
ReDim Preserve chkstr(1 To cnt + 1)
chkstr(cnt + 1) = Format(idx, "00")
cnt = cnt + 1
End If
Next
If cnt > 0 Then
With UserForm1
.TextBox1.Text = Join(chkstr(), ",")
.Show
End With
End If
Erase chkstr()
End Sub
こんなコードでUserform1は、表示されます。
尚、Userform1には、Textbox1のみ配置で
Userform1には、Initializeイベントが記述されていないものとします。
確認してみて下さい。
|
|