| 
    
     |  | ▼カウボーイズ さん: ご返信まことにありがとうございます。
 私は初級者なのにあれこれやりたくなるたちで、皆さまにいろいろご面倒をおかけしています。
 目標は自力解決ですが道のりは遠いです。
 
 さて【55978】にしたがい修正してみました所、成功しました。
 次に、アドバイスに従って無駄な部分を修正しました。
 下記部分については、シートに設けられたボタンを押してユーザーフォームをShowさせるときのプロシージャに移動しました。
 If Not Application.Intersect(Range("C3:C104"), ActiveCell) Is Nothing Then
 UserForm1.Show
 Else
 MsgBox "Programのいずれかを選択してください。"
 End If
 
 全体の実行結果はOKでした。
 記述も大変スリムになりました。
 このたびは本当にありがとうございました。
 深く感謝申し上げます。
 
 (標準モジュール)
 
 Sub Sample()
 
 If Not Application.Intersect(Range("C3:C104"), ActiveCell) Is Nothing Then
 UserForm1.Show
 Else
 MsgBox "Programのいずれかを選択してください。"
 End If
 
 End Sub
 
 -------------------------------------------------
 (ユーザーフォーム)
 
 Option Explicit
 
 Public i As Long
 Public ws1 As Worksheet
 Public MyCount As Integer
 Public n As Long
 
 Private Sub UserForm_Initialize()
 Calendar1.Value = Date
 '  カレンダーの日付をセルにセットする
 Dim i As Integer
 
 Me.ListBox1.RowSource = Worksheets("member").Range("a2:b51").Address(external:=True)
 
 Me.TextBox1.Value = Date
 With Me.ComboBox1
 For i = 1 To 24
 .AddItem i
 Next
 End With
 '
 '  With Me.ComboBox2
 '   For i = 0 To 45 Step 15
 '    .AddItem i
 '   Next
 '  End With
 '  With Me.ComboBox3
 '   For i = 1 To 24
 '    .AddItem i
 '   Next
 '  End With
 '  With Me.ComboBox4
 '   For i = 0 To 45 Step 15
 '    .AddItem i
 '   Next
 '  End With
 
 End Sub
 
 Private Sub Calendar1_Click()
 TextBox1.Value = Calendar1.Value
 '  カレンダーの日付をセルにセットする
 End Sub
 
 Private Sub CommandButton1_Click()
 Dim From_Str As String
 Dim To_Str As String
 Dim Hours As Double
 
 Set ws1 = Worksheets("history")
 i = ws1.Range("B65536").End(xlUp).Row + 1
 If i < 5 Then
 i = 5
 End If
 
 For n = 0 To Me.ListBox1.ListCount - 1
 If (Me.ListBox1.Selected(n) = True) Then
 
 With ActiveCell
 ws1.Cells(i, 2).Resize(, 3).Value = Array(.Offset(, -1).Value, .Value, .Offset(, 3).Value)
 ws1.Cells(i, 2).Offset(, 7).Value = .Offset(, 5).Value
 '
 '          If Me.ComboBox1.Value <> "" And Me.ComboBox2.Value <> "" Then
 '          From_Str = Me.ComboBox1.Value & ":" & Me.ComboBox2.Value
 '          End If
 '          If Me.ComboBox3.Value <> "" And Me.ComboBox4.Value <> "" Then
 '          To_Str = Me.ComboBox3.Value & ":" & Me.ComboBox4.Value
 '          End If
 '
 '          If From_Str <> "" And To_Str <> "" Then
 '          Hours = (CDate(To_Str) - CDate(From_Str)) * 24
 '          'Date
 '          ws1.Cells(i, 5).Value = Me.TextBox1.Value
 '          'Time(From)
 '          ws1.Cells(i, 6).Value = CDate(From_Str)
 '          'Time(To)
 '          ws1.Cells(i, 7).Value = CDate(To_Str)
 '          'Hours
 '          ws1.Cells(i, 8).Value = (CDate(To_Str) - CDate(From_Str)) * 24
 '          'Place
 '          ws1.Cells(i, 10).Value = Me.TextBox2.Value
 '          'Notes
 '          ws1.Cells(i, 11).Value = Me.TextBox3.Value
 'Id
 ws1.Cells(i, 12).Value = Me.ListBox1.List(n, 1)
 'Name
 ws1.Cells(i, 13).Value = Me.ListBox1.List(n, 0)
 
 i = i + 1
 
 '          End If
 End With
 End If
 Next n
 Unload UserForm1
 End Sub
 
 Private Sub UserForm_Deactivate()
 Unload UserForm1
 End Sub
 
 |  |