Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36574 / 76732 ←次へ | 前へ→

【45337】セル間へのデータ入力
質問  alco  - 06/12/20(水) 4:47 -

引用なし
パスワード
   こんばんわ。VBA初心者です。
いつも参考にさせて頂いております。
以下の様なマクロを作成しており、壁にぶち当たってしまいました。
皆様、どうか宜しくお願い致します。


 A   
----------
1  9:00 
2  9:30 
3 
4 10:00 
5
6 
7 15:00 
8 
9 20:00 
10


----------------------------
textbox1  CommandButton1
[ 時刻 ] 
----------------------------

上記の様な表があり、フォームからデータを入力するという物です。
※表のデータはデフォルトで、変化しません。
※時刻は10分単位で、9:00〜23:00です。

1.textbox1に時刻を入力し、CommandButton1をクリックしてtextbox1のデータを
 A列の空白のセルに入力させます。
2.textbox1に入力された時刻によって、入るセルを変化させたい。
 (例)
 "09:50"と入力した場合はA3へ。
 "11:00"と入力した場合はA5へ。
 "19:00"と入力した場合はA8へ。
 "23:00"と入力した場合はA10へ。
 
 という感じです。
 但し、"9:20"等、セルの間に空白が無い時刻や、同じ時刻は、直下の空白セルへ記入させます。


悩んで、以下の様なお粗末なコードを作成しましたが、
ご覧の通り、膨大なIF文が出来上がってしまいました。。。
実際に作成しようとしている物は、もっと行が多いので、これじゃ使い物になりません。

textboxに入力された時刻を、A列の時刻を読み取って、その間の空白セルへ入力する。
というマクロを作成したいと思っています。
宜しくお願い致します。


Private Sub CommandButton1_Click()

'時刻確認
  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

'---------------
  Dim r As Integer, u As Integer, v As Integer, g As Integer
  Dim atime As Date
  atime = TimeValue(UserForm1.Controls("textbox1"))
    
  If atime >= TimeValue("09:00:00") And atime < TimeValue("10:00:00") Then
      For r = 1 To 4
        If Cells(r, 1).Value = "" Then
          Cells(r, 1).Value = UserForm1.Controls("TextBox1").Value
          Exit For
        End If
      Next r

  ElseIf atime >= TimeValue("10:00:00") And atime < TimeValue("15:00:00") Then
      For u = 4 To 7
        If Cells(u, 1).Value = "" Then
          Cells(u, 1).Value = UserForm1.Controls("TextBox1").Value
          Exit For
        End If
      Next u
  
  ElseIf atime >= TimeValue("15:00:00") And atime < TimeValue("20:00:00") Then
      For v = 7 To 9
        If Cells(v, 1).Value = "" Then
          Cells(v, 1).Value = UserForm1.Controls("TextBox1").Value
          Exit For
        End If
      Next v
  
  ElseIf atime >= TimeValue("20:00:00") And atime < TimeValue("23:00:00") Then
      For g = 9 To 10
        If Cells(g, 1).Value = "" Then
          Cells(g, 1).Value = UserForm1.Controls("TextBox1").Value
          Exit For
        End If
      Next g
  
  End If


End Sub

1 hits

【45337】セル間へのデータ入力 alco 06/12/20(水) 4:47 質問
【45338】Re:セル間へのデータ入力 かみちゃん 06/12/20(水) 7:07 発言
【45364】Re:セル間へのデータ入力 alco 06/12/20(水) 20:17 質問
【45370】Re:セル間へのデータ入力 かみちゃん 06/12/20(水) 22:06 発言
【45371】Re:セル間へのデータ入力 alco 06/12/20(水) 23:55 質問
【45372】Re:セル間へのデータ入力 かみちゃん 06/12/21(木) 0:02 発言
【45373】Re:セル間へのデータ入力 alco 06/12/21(木) 1:18 お礼

36574 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free