'カレンダーフォームのVBA
If Intersect(Target, Range("BP1")) Is Nothing Then Exit Sub
If MsgBox("日付を記入するためカレンダーを表示させます、よろしいでしょうか?", vbYesNo) = vbNo Then
Exit Sub
Else
End If
' カレンダーフォームを起動する
Call ShowCalendarFromRange2(Target)
End Sub
セルBP1を選択するとあらかじめ作成していたカレンダーフォームが起動され指定した日付を選択出来るVBAが入っています。
質問ですがカレンダーで日付を選択した後に直ぐinput boxを使用し「指定した時間(〇〇:〇〇)を入力して下さい。」と表示させ、指定した時間をCO14に表記させます。(例えば8:00と入力したらCO14に8:00と表示される様にします。)
次にもう一度input boxを使用し今度は「先ほど指定した時刻からの時間間隔(〇〇分)を入力して下さい。」と表示させ、CO15~CO37に指定した時間間隔を自動で表示させます。(例えば5分と入力したらCO15には8:05、CO16には8:10・・・とinput boxでしていた時間間隔を自動で表示させます。)
この様なVBAはどの様にすれば宜しいでしょうか?
>input boxを使用し「指定した時間(〇〇:〇〇)を入力して下さい。」
>と表示させ、
Dim ans As String
ans = InputBox("指定した時間(〇〇:〇〇)を入力して下さい。")
>指定した時間をCO14に表記させます。
Range("CO14").Value = ans
>input boxを使用し今度は「先ほど指定した時刻からの時間間隔(〇〇分)
>を入力して下さい。」と表示
ans = InputBox("先ほど指定した時刻からの時間間隔(〇〇分)を入力して下さい。")
>CO15~CO37に指定した時間間隔を自動で表示させます。
Dim c As Range
For Each c In Range("CO15:CO37")
c.Value = Format(c.Offset(-1).Value + TimeValue("0:" & ans), "hh:mm")
Next
質問者
お礼
この度はありがとうございました。
無事に解決できました。
質問者
補足
>CO15~CO37に指定した時間間隔を自動で表示させます。
Dim c As Range
For Each c In Range("CO15:CO37")
c.Value = Format(c.Offset(-1).Value + TimeValue("0:" & ans), "hh:mm")
Next
この部分で一時間ごとに表示させたい場合はどの様にすれば良いでしょうか?
59分までの数字は読み込んでくれますが60分(1時間後)以降の数字ではエラーになります。
>60分(1時間後)以降の数字ではエラーになります。
1時間以降も 70、80なと 分で入力してください
For Each c In Range("CO15:CO37")
c.Value = Format(c.Offset(-1).Value + TimeValue((ans \ 60) & ":" & (ans Mod 60)), "hh:mm")
Next
質問者
お礼
この度はありがとうございました。
無事に解決できました。
質問者
補足
最後の質問です。先ほどのVBAを実行してみると
>input boxを使用し今度は「先ほど指定した時刻からの時間間隔(〇〇分)を入力して下さい。」と表示
ans = InputBox("先ほど指定した時刻からの時間間隔(〇〇分)を入力して下さい。")
>CO15~CO37に指定した時間間隔を自動で表示させます。
For Each c In Range("CO15:CO37")
c.Value = Format(c.Offset(-1).Value + TimeValue((ans \ 60) & ":" & (ans Mod 60)), "hh:mm")
Next
ここのコード部分のinput boxのキャンセルボタンを実行すると「型が一致しません。」と表記されc.Value = Format(c.Offset(-1).Value + TimeValue((ans \ 60) & ":" & (ans Mod 60)), "hh:mm")のコード部分が黄色く着色されます。
キャンセルボタンを押したらキャンセルする様にはどうすれば良いですか?
お礼
この度はありがとうございました。 無事に解決できました。
補足
>CO15~CO37に指定した時間間隔を自動で表示させます。 Dim c As Range For Each c In Range("CO15:CO37") c.Value = Format(c.Offset(-1).Value + TimeValue("0:" & ans), "hh:mm") Next この部分で一時間ごとに表示させたい場合はどの様にすれば良いでしょうか? 59分までの数字は読み込んでくれますが60分(1時間後)以降の数字ではエラーになります。