| 
    
     |  | 別解おまけ。 
 ▼みーちゃんキャット さん:
 >チェック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。
 
 |  |