| 
    
     |  | パッセンジャーさん 早速の御教授ありがとうございます。For Eachを使うのですね。
 
 ということであれば、存在をチェックするfunctionを下記のように作って、
 
 ----- ここから -----
 '現在開いているユーザーフォームの存在のチェック
 'True=ユーザフォーム有り、False=ユーザフォーム無し
 Function IsUserformOpen(strUserformName As Variant) As Boolean
 Dim objUserform As Object
 IsUserformOpen = False
 'ユーザーフォームの一覧
 For Each objUserform In UserForms
 '大文字小文字を区別しない
 If LCase(strUserformName) = LCase(objUserform.Name) Then
 IsUserformOpen = True
 Exit For
 End If
 Next
 End Function
 ----- ここまで -----
 
 コマンドボタンのルーチンの条件で使えるかと思ったのですが、
 
 ----- ここから -----
 Private Sub CommandButton1_Click()
 '画面を固定
 Application.ScreenUpdating = False
 
 If (IsUserformOpen(UserForm2.Name) = False) Then
 UserForm1.Show vbModeless
 End If
 '画面固定を解除
 Application.ScreenUpdating = True
 End Sub
 ----- ここまで ----
 型が違うと怒られてしまいます。
 
 UserForm2.Nameの型がVariantじゃ駄目、と言われているような風なのですが、間違い等をご指摘頂ければ幸いです。
 
 |  |