|
別解おまけ。
▼みーちゃんキャット さん:
>チェックBoxをユーザーフォームに追加し、その戻り値を評価して、
>チェックがついていたら以降ダイアログを表示させないように
>するにはどうしたらいいでしょうか?
これは、ユーザーフォームのプロパティに手を加えないとだめですね。
VBプロジェクトに手を加えるので、あまり薦めません。
EXCEL2000とかだと駄目かもしれません。
by2003SP3
チェックボックスの状態をフォームを閉じる時にチェックボックスのプロパティに手を加える。
チェックボックスが3個あるとして、フォーム起動後にチェックボックスにチェックを入れたり外して、フォームを閉じるとその時の状態を保存と言うか、プロパティを書き換えます。
フォームを閉じた後にVBE画面でも確認できます。
フォームモジュール
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim 引数 As String
If CloseMode = vbFormCode Then '閉じるボタンの時は状態未保存。
Exit Sub
End If
For i = 1 To 3
If Me.Controls("CheckBox" & i).Value = True Then
引数 = 引数 & "CheckBox" & i & " "
End If
Next
MsgBox 引数
If Len(引数) = 0 Then Exit Sub
引数 = Mid(引数, 1, Len(引数) - 1)
Application.OnTime Now(), "'マクロ名 " & """" & 引数 & """" & "'"
End Sub
標準モジュール
Sub マクロ名(ContlSt As String)
Dim myCtl As Control
For Each myCtl In ThisWorkbook.VBProject.VBComponents.Item("UserForm1").Designer.Controls
i = i + 1
If TypeName(myCtl) = "CheckBox" Then
Cells(i, 3).Value = myCtl.Value
If InStr(1, ContlSt, myCtl.Name) > 0 Then
myCtl.Value = True
Else
myCtl.Value = False
End If
End If
Next
End Sub。
|
|