標準モジュール

Public uCan As Boolean

Sub ctrl()
    Dim i, ans As Integer
    Range("b3").Select
    UserForm1.Show
    If uCan = False Then
    For i = 0 To 5
    If UserForm1.ListBox1.Selected(i) = True Then
            ans = i
         End If
         Next i
      ActiveCell.Offset(ans, 1).Select
      Selection.Value = UserForm1.TextBox1.Value
   End If
End Sub

とりあえずこんな感じ

そしてフォーム作成

プロパティでいろいろとパーツの細かい部分を決定します。
(正直意味分かってないけど。)


*UserForm1のソース

Private Sub CommandButton1_Click()
    Module1.uCan = False
  'フォームを隠す
    UserForm1.Hide
    
End Sub

Private Sub CommandButton2_Click()
    Module1.uCan = True
    UserForm1.Hide
End Sub

'フォームを開くときに行う処理を書く
Private Sub UserForm_Initialize()
    Load UserForm1
End Sub
'フォームを閉じるときに行う処理を書く
'(UserFormのTerminateイベントでShowは使うならしいっす)
Private Sub UserForm_Terminate()
    Unload UserForm1
End Sub

軽いパニック状態です。
でもきっと・・・

'フォームを開くときに行う処理を書く
Private Sub UserForm_Initialize()
    Load UserForm1
End Sub
'フォームを閉じるときに行う処理を書く
'(UserFormのTerminateイベントでShowは使うならしいっす)
Private Sub UserForm_Terminate()
    Unload UserForm1
End Sub

ここはお約束ってことでいいのかな?

そして・・・