|
こんにちは。かみちゃん です。
>ご覧の通り、膨大なIF文が出来上がってしまいました。。。
>実際に作成しようとしている物は、もっと行が多いので、これじゃ使い物になりません。
Select Case ステートメントで分岐して、For〜Next開始列と終了列を指定しては
いかがでしょうか?
以下のような感じでできると思います。
Private Sub CommandButton1_Click()
Dim atTime As Date
Dim intCol As Integer
Dim intStartCol As Integer
Dim intEndCol As Integer
'時刻確認
If IsDate(UserForm1.Controls("textbox1").Value) = True Then
UserForm1.Controls("textbox1").Value = Strings.Format(UserForm1.Controls("TextBox1"), "hh:mm")
Else
MsgBox "時刻を入力して下さい"
UserForm1.Controls("TextBox1").SetFocus
Exit Sub
End If
atime = TimeValue(UserForm1.Controls("textbox1"))
Select Case Hour(atTime)
Case 9
intStartCol = 1
intEndCol = 4
Case 10 To 14
intStartCol = 4
intEndCol = 7
Case 15 To 19
intStartCol = 7
intEndCol = 9
Case 20 To 22
intStartCol = 9
intEndCol = 10
Case Else
intStartCol = 0
intEndCol = 0
MsgBox "範囲外の時刻です" & atTime
End Select
If intStartCol <> 0 And intEndCol <> 0 Then
For intCol = 9 To 10
If Cells(intCol, 1).Value = "" Then
' Cells(intCol, 1).Value = UserForm1.Controls("TextBox1").Value
Exit For
End If
Next intCol
End If
End Sub
|
|