
こんばんは、エクセル2010を使っています。
Z23セルに、
=TIME(HOUR(Sheet1!D29), MINUTE(Sheet1!D29)-10,SECOND(Sheet1!D29))
が入っていて、時刻を表示させています。
この時刻になったら、アラームやBeep音を鳴らすのはどうしたら良いでしょうか。
ちなみに参照は30分おきくらいに更新されますので、出来ればその度に作業の無い物が理想です。
または、更新時に他のマクロが実行されますので、そのマクロに割り込ませる形でもOKです。
音声はファイルからではなく、簡易なもので結構です。
詳しい方、教えて頂けませんでしょうか。
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんばんは。
>1:トグル? の状態ですと、時間内にマクロが実行されずに次のステップに移ると1回目に設定され、2回目は解除されてしまいます。
今の設定は、1つの時間だけ設定すれば、後は、実行されたら新しい設定が設けられるのです。こちらが、勝手に解除するオプションを付けてしまったのですが、残っているタイマーが思わぬ動きをする時があるからです。
もし、複数の設定の場合は、少なくとも、設定ボタンと解除ボタンを分けたほうがよいかもしれません。どちらがよいか、おっしゃってください。複数の設定する方法は、昔、どんな方法でやったのか、今はあまり覚えていませんので、試行錯誤になってしまうかもしれません。
>Beepを数回続けて鳴らそうと
>としてみましたが、変数が設定されていません的なエラーが出てしまいます。
>これを、実行させるにはどうしたら良いでしょうか。
ある程度の時間差が必要なのです。
''Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long) 'モジュールの先頭に置く
Dim i As Long
For i = 1 To 10
Beep
DoEvents '←たぶんいらないはずです。
Sleep 300 'スリープは、0.3秒 500(0.5)秒ぐらいのほうが良いかも。
Next i
No.3
- 回答日時:
#2の補足
>セル値からの設定に無理があるようです。
言葉が少ないと気にされる人もいたり、誤解されるおそれがあるので、説明します。その都度変わる時間値をNOW()関数などで設定しても、やはり、つねに、Calculateイベントが働いていないので、時間が更新しないので、それをOnTimeメソッドに代入すると、過去の時間だから、エラーが発生する、と思ったからです。ともかく、あっちこっちに、MsgBox で正しく設定されているか確認して、掲示しました。なお、本来、MsgBox は、自動的に閉じるものの方がよいのかなって思いました。もし、そうだったら、ご指摘ください。
No.2
- 回答日時:
こんばんは。
必ず、フォームコントロールのボタンに取り付けてください。
このボタンはトグルになっていますので、設定を押してから、もう一度押すと、解除されます。
メッセージボックスは、確認のためだけに入れています。現在は解除とエラーの時だけ、メッセージが出るような設定がされています。入り方が、ボタンとマクロによる再設定の2つなので、ロジックはややこしいです。
>Application.OnTime EarliestTime:=Range("Z23").Value, Procedure:="Test"
>とやってみたのですが、この行でエラーが出てしまうんですよね・・・。
マクロ側の問題ではなく、Range("Z23").Value の問題だと思います。
確か、ご質問者さんは、データインポートの場合に、Calculate イベントは働いていたような気がしますが、それでも、セル値からの設定に無理があるようです。
30分後に再び鳴るようになります。
myTime = Date + Time + TimeSerial(0, 30, 0) '*30分の設定
Beep に関しては、一応、何かあれば、リクエストしてください。
Wavファイルでも可能です。
'//
Option Explicit
Dim myTime As Variant
Dim flg As Boolean
Sub ボタン1_Click() '必ずフォームコントロール・ボタン
'No. 8979529
If TypeName(Application.Caller) = "String" Then
If myTime = Empty Then
myTime = Range("Z23").Value + Date
If myTime <= Date + Time Then
MsgBox myTime & "では、設定できません。", vbExclamation
myTime = Empty
Exit Sub
End If
flg = True
Else
flg = False
End If
ElseIf myTime > Date + Time Then
'ボタンからではない場合
flg = True
End If
On Error GoTo ErrHandler
Application.OnTime EarliestTime:=myTime, _
Procedure:="myAlarm", Schedule:=flg
If flg = False Then
MsgBox myTime & "の設定は解除されました。", vbInformation
myTime = Empty
Else
'' MsgBox myTime & "は、設定されました。", vbInformation
End If
Exit Sub
ErrHandler:
If Err.Number <> 0 Then
MsgBox myTime & "は設定できませんでした", vbExclamation
End If
myTime = Empty
End Sub
Sub myAlarm()
Beep
''MsgBox myTime & "実行されました", vbInformation
flg = False
myTime = Date + Time + TimeSerial(0, 30, 0) '*30分の設定
''Range("A1").Value = myTime '次の時間
Call ボタン1_Click
End Sub
'///
No.1
- 回答日時:
OnTimeを使いますが
Sub ボタン1_Click()
Application.OnTime EarliestTime:=Range("Z23").Value, Procedure:="Test"
End Sub
Sub Test()
Beep
End Sub
こんな感じで使います。
Z23で指定した時間に Test()を実行すると云う予約をする感じです。
>ちなみに参照は30分おきくらいに更新されますので、出来ればその度に作業の無い物が理想です。
この更新された後のタイミングで、Ontimeが実行されるようにすれば、ご希望の動作になりますが
この部分が不明なので取り合えず、ここまでです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについて 1 2023/04/17 17:22
- Excel(エクセル) ExcelのVBAコードについて教えてください。 1 2022/06/20 09:22
- Visual Basic(VBA) ExcelのVBAコードについて教えて下さい。 2 2022/06/25 14:04
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Visual Basic(VBA) 【再投稿】VBAのシフト表でバグが出て困っています 3 2022/09/24 08:29
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelで時刻になったら知らせてくれるように
Visual Basic(VBA)
-
エクセルにアラーム機能ってありますか?
Excel(エクセル)
-
エクセル、条件を満たしたら音を鳴らす方法教えて下さい
Excel(エクセル)
-
-
4
EXCELのセルへ、デジタル時計を表示できますか?
Excel(エクセル)
-
5
ビープ音を連続して鳴らす
Visual Basic(VBA)
-
6
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
7
vba セルに入力した時間をマクロで受け取るには?
Excel(エクセル)
-
8
エクセル マクロ 指定日の指定時刻にプロシージャを実行
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
モトローラのmoto g52j 5Gのマ...
-
スマホの着信が鳴らない
-
iPhoneに対応しているスマート...
-
GalaxySII とBmobileSIM
-
携帯のアラームを使ってる人に...
-
INFOBAR2 マナーモー...
-
セルの時刻になったらアラーム...
-
Mail送信のシューン、ゴミ箱を...
-
ドコモN206のドライブモードの...
-
スマホのバイブ機能が一番強い...
-
Pixel3(ピクセル3)の指紋認証時...
-
声が聞こえないといわれる 携帯...
-
F-01C 車アイコンの消し方 電話...
-
トリマの歩数が昨日のままリセ...
-
nasneについてです。 緑のラン...
-
全ての変数を一気にリセットす...
-
恋人が携帯を紛失してしまった...
-
一度しかない人生だからこそ
-
CDの自動消去について
-
初期化の方法【ARROWS X F-10D】
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
モトローラのmoto g52j 5Gのマ...
-
セルの時刻になったらアラーム...
-
Mail送信のシューン、ゴミ箱を...
-
F-01C 車アイコンの消し方 電話...
-
スマホのバイブ機能が一番強い...
-
マナーモードにするとバイブが...
-
この時計のアラームの設定の仕...
-
開閉時の音について
-
テレビの画面表示や音量バー、
-
声が聞こえないといわれる 携帯...
-
らくらくホン検索履歴残らない
-
SIMロック解除済OPPO A79 5G Y!...
-
メールを打ち込む時の音を消す...
-
スマホ イヤホンが片方しか聞こ...
-
YAMAHA SOL2 で音が出ません。...
-
ラインの文字入力がローマ字か...
-
スマホを機種変更する場合、キ...
-
MNP後、開通したのにデータ通信...
-
ドコモN206のドライブモードの...
-
助けて下さい‼スマホなのですが...
おすすめ情報
回答ありがとうございますー
そうですよねー私も
Application.OnTime EarliestTime:=Range("Z23").Value, Procedure:="Test"
とやってみたのですが、この行でエラーが出てしまうんですよね・・・。
何故でしょうね?
回答いただき、ありがとうござます。
教えて頂いたコードでおおよそ、希望は実現できそうです。
こちらの利用環境で、ご指摘の通り時刻が過ぎている場合エラーが出ますので次の方法で対処しました。
=IFERROR(TIME(HOUR(Sheet1!D29), MINUTE(Sheet1!D29)-10,SECOND(Sheet1!D29)),"23:59:00")*1
それで、よろしければ2点ほど質問させていただきたいのです。
1点目
トグル? の状態ですと、時間内にマクロが実行されずに次のステップに移ると1回目に設定され、2回目は解除されてしまいます。
それで利用環境を良く考えてみると、1設定する時にマクロを新しく実行する形になりますので、1回目の質問に有るような、2回目の実行のパターンを視野に入れる必要はなさそうです。
2点目
Beepを数回続けて鳴らそうと
Beepの部分を
For i = 1 To 10
Beep
Next i
としてみましたが、変数が設定されていません的なエラーが出てしまいます。
これを、実行させるにはどうしたら良いでしょうか。
お手数かと思いますが、教えて頂けませんでしょうか。
よろしくお願いいたします。
再度の回答ありがとうございます!
時間の設定ループ設定 上手く行きました。
楽しいですね^^ ありがとうございます。
それで、1点目なのですが、1回目、2回目の概念を無くして、設定がされていても同じマクロを実行すれば今ある設定を解除するような仕様って言うのは不可能でしょうか。
現実的には、時間前にマクロを停止する事は無く、あるとすればファイルを閉じるか、次のマクロを実行する事なのです。
ここまで来ると自分では理解を超えていますので、教えて頂ければ嬉しいです。
よろしくお願いいたします。