VBAを使用してカレンダーフォームを表示し、指定した時刻と時間間隔を表示する方法

このQ&Aのポイント
  • Excel VBAを使用すると、カレンダーフォームを表示させて日付を選択し、指定した時刻と時間間隔を表示することができます。
  • まず、セルBP1を選択するとカレンダーフォームが起動し、日付を選択できます。
  • 次に、input boxを使用して特定の時刻と時間間隔を入力し、CO14およびCO15からCO37にそれぞれ表示されます。
回答を見る
  • ベストアンサー

指定した時刻と時間間隔を表示するVBA

'カレンダーフォームの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はどの様にすれば宜しいでしょうか?

noname#247334
noname#247334

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>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

noname#247334
質問者

お礼

この度はありがとうございました。 無事に解決できました。

noname#247334
質問者

補足

>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時間後)以降の数字ではエラーになります。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>キャンセルボタンを押したらキャンセルする様にはどうすれば良いですか? ans = InputBox・・・・ If ans = "" Then Exit Sub

noname#247334
質問者

お礼

この度はありがとうございました。 無事に解決できました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>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

noname#247334
質問者

お礼

この度はありがとうございました。 無事に解決できました。

noname#247334
質問者

補足

最後の質問です。先ほどの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")のコード部分が黄色く着色されます。 キャンセルボタンを押したらキャンセルする様にはどうすれば良いですか?

関連するQ&A

  • EXCEL VBA---IsDate

    お知恵をお貸し下さい。 VBAでフォームを作成し、テキストボックスに数字(日付)を入力 (入力→10/7, 表示→2005/10/07) それを、IsDateで日付かどうかチェックさせたいのですが 下記のコードでは、例えば10月35日と入力してもエラーになりません。 (入力→10/35, 表示→1935/10/01) 2005/10/35と入力すればエラーになってくれるのですが やはりこの方法しかないのでしょうか? もし、良い方法がありましたらお教え下さい。 よろしくお願いします。 ----------------------------------------------------------------- Sub Test() Dim Data As Variant Data = TextBox16.Text If IsDate(Data) Then TextBox16.Value = CDate(Data) Else MsgBox ("正しい日付を入力してください。") End if End sub -----------------------------------------------------------------

  • 時間表示の識別法は

    いつもお世話になっております。 Access2000のVBAでコードの質問があります。 連結されていないフォームでテーブルからレコードセットで呼び出して、フォームのテキストボックスに表示されるようになっているのですが、 終了時間が表示されているときは下記のコードのとおり 返却処理に進みそうでない時は保存処理にするようにしたいのですが、その終了時間(時間)がテキスとボックスに表示されているかどうかの識別方法を教えていただけませんか?要するにワイルドカードのようなもので今は*にしているんですが、動きません。テーブルの終了時間のフィールドは日付型で半角表示です。 ぜひ教えていただけませんか? Public Sub 識別処理() If (Me.終了時間.Value = "*") Then If MsgBox("返却ですよね?", vbYesNo) = vbYes Then Call 返却処理     End If     Else Call 保存処理 End If End Sub

  • Excel VBA テキストボックスに当日の日付

    Excel 2013において、VBAで入力フォームを作成中の初心者です。 入力フォームの中に日付の項目があり、テキストボックスに手入力しています。 そのテキストボックスに当日の日付を自動で表示させたく、ネットで調べ試しましたが、うまくいきません。 やりたいこととしては、テキストボックスに今日の日付を自動的に和暦で表示させ、その日付を変更する場合には、「2016-12-03」などと入力後、和暦に自動的に変換して表示させたいのです。 手入力において、「2016-12-03」と入力後、自動的に和暦に変換するコードはネットで見つけることができ、うまくいったのですが、当日の日付を自動的に表示させる方法がわからずにおります。 日付を手入力後、和暦で表示させるコードは以下のようにしてあります。 Private Sub textbox1_AfterUpdate() With Me.textbox1 If IsDate(.Value) Then .Value = Format(.Value, "ggge年m月d日") End If End With End Sub どなたか、教えていただけると助かります。 よろしくお願いいたします。

  • EXEL VBAで印刷の指定をしたいのですが

    VBA初心者、勉強中です。 sheet1に2つの表がありまして下記のとおりボタンをクリックしたらインプットボックスが立ち上がって2つの表の1か2を指定したら範囲がぷれびゅーするということなんですが、1を入れても、2を入れてもMsgBox "1か2を入力して!しか表示しません。 さんざん調べまくりましたが、どなたかご教授お願いします。 Sub 印刷() Dim SentP As Integer On Error Resume Next SentS = InputBox("どちらを印刷?1売上 2材料") If SentP = 1 Then Range("a1:g32").Select Selection.printpreiew ElseIf SentP = 2 Then Range("j1:n41").Select Selection.PrintPreview Else MsgBox "1か2を入力して!" End If End Sub

  • テキストボックスにカレンダー表示して入力方法

    ユーザーフォーム内のテキストボックスに日付をカレンダー表示し指定日によって入力したいのですが 方法がわかりません。どなたかご教授よろしくお願いします。

  • エクセル2003 ユーザーフォームにてフォーカスの有無の判断

    いつも勉強させていただいております。 今回、エクセルのユーザーフォームを用いて、入力画面を作成 しております。 で、日付を入力するテキストボックスが2箇所有り、 その入力をMSフォームカレンダーから入力させようと 考えております。 この日付を入力するテキストボックスは、それぞれ異なる 日を入力させたいのですが、カレンダーをクリック したときに、フォーカスの在る方に入力する形を考えています。 でご質問なのですが、 「フォーカスの在るほうに」 と言う分岐コードの書き方がわかりません。 宜しくお願いいたします。 Private Sub Calendar1_Click() 'if textbox3にフォーカスが在るならば<<書き方がわかりません TextBox3.Value = Calendar1.Value end if 'if textbox4にフォーカスが在るならば<<書き方がわかりません TextBox4.Value = Calendar1.Value end if End Sub こう言う書き方は出来ないものでしょうか?

  • エクセルVBA テキストボックス 日付表示

    エクセルVBAにて入力用フォームを開いたときに フォーム内にあるテキストボックスに今日の日付が 自動で表示されるようにしたいのですが どの様に書き込めば宜しいでしょうか? また、2008.09.05 平成20年9月5日などの 日付形式の変更はどの様に書き込むのでしょうか?

  • カレンダーコントロールからセルとシート名に日付を入力

    エクセルVBAコードについてですが、マクロを実行すると、カレンダーコントロールが表示され、選択したカレンダーの日付をクリックすると、任意に指定したセルとシート名にその日付を表示させたいのですが、どのようなコードを書けばよいのか教えてください(><) ちなみに、今はインプットボックスから日付を入力する方法をとっていますが、都度「2008年○月○日」と入力しなくてはいけませんので、効率が悪く困っています。 どうぞ宜しくお願い致します。

  • 指定セルクリックでカレンダー表示

    Excelsheet1VBAコードに下記に記載されておりA列全てのセルクリックでカレンダーが表示されますがA1セルクリックのみカレンダー表示するにはどのようにコードを変更すれば良いかお願いします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' 複数セル選択時は無視 If Target.Count <> 1 Then Exit Sub ' A列以外は無視(今回サンプルの例) If Target.Column <> 1 Then Exit Sub ' カレンダーフォームを起動する Call ShowCalendarFromRange(Target) End Sub

  • VBA 日付の期間を表示する方法

    以前は仕事と話しましたが、勉強が仕事みたいでした; すみません。また質問させてください。 VBAで日付をやる際Format(Date, "ggge年m月d日")というようなソースを書くと思うのですが、今回知りたいのが入力フォームというブックに日付をセットすると予め用意されている別のブックの表にそのセットした日付から1ヶ月間分の日付と曜日を行に貼り付けていきたいのですがどうしたらいいのでしょうか? 日付を一年前までの日付かどうかのチェックのソースもよろしくおねがいします。 その入力フォームのマクロはまだ、値チェックまでしかできていません。 意味不明かもしれませんが何卒よろしくお願いします。 ------------ソース------------------ Option Explicit Private Sub CommandButton1_Click() If Worksheets("日付セット").Range("C6") = "" Then '値が入っているか MsgBox ("日付を入力してください!") Exit Sub Else End If End Sub

専門家に質問してみよう