
こんばんは、エクセル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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スマホのバイブ機能が一番強い...
-
モトローラのmoto g52j 5Gのマ...
-
ソニーのスマホ、Ace Ⅲ SO-53C...
-
Mail送信のシューン、ゴミ箱を...
-
サイレントモードとマナーモー...
-
スマホのXperia sov32を買いま...
-
nasneについてです。 緑のラン...
-
リンナイの食洗機エラーリセッ...
-
トリマの歩数が昨日のままリセ...
-
全ての変数を一気にリセットす...
-
スマホSH-51C
-
AQUOS BDのディスクトレイが開...
-
ワイヤレスイヤホンを使用して...
-
携帯の端末暗証番号を解析する...
-
マンガの広告をでなくなるよう...
-
省エネタップのリセットスイッ...
-
Smart情報をリセットする方法は...
-
トリマの歩数って、翌日は消え...
-
カメラの初期化について。
-
学校の管理下にあるChromebook...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
モトローラのmoto g52j 5Gのマ...
-
Mail送信のシューン、ゴミ箱を...
-
セルの時刻になったらアラーム...
-
テレビの画面表示や音量バー、
-
携帯電話の目覚まし機能について
-
IXY(PC1001)の日時設定方法
-
W52CAで決まった時間にバイブレ...
-
スマホの着信が鳴らない
-
スマホのバイブ機能が一番強い...
-
F-01C 車アイコンの消し方 電話...
-
携帯のアラームを使ってる人に...
-
GalaxySII とBmobileSIM
-
SH903iTV アラームが鳴らず困...
-
SH905iTV「アドレス帳の登録人...
-
iPhoneに対応しているスマート...
-
ドコモコネクションマネージャ...
-
スマートウォッチは、なぜ最近...
-
docomoのN-09Aの使い方に関して...
-
Illustrator CS3のメモリー
-
ドコモN504is
おすすめ情報
回答ありがとうございますー
そうですよねー私も
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回目の概念を無くして、設定がされていても同じマクロを実行すれば今ある設定を解除するような仕様って言うのは不可能でしょうか。
現実的には、時間前にマクロを停止する事は無く、あるとすればファイルを閉じるか、次のマクロを実行する事なのです。
ここまで来ると自分では理解を超えていますので、教えて頂ければ嬉しいです。
よろしくお願いいたします。