アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、ユーザーフォームで入力したデータを各セルに入れてくVBAを書いています。これ自体は問題ないのですが、同時にタイマーのマクロを起動させたいのですが書き方がさっぱりわかりません。

ネットで調べて、タイマーのマクロは書けました。

タイマーのマクロというのは、特定の時間になったらユーザーフォームで打ちこんだデータのブックを送付して特定の宛先にメールするというマクロです。

このタイマーのマクロ自体は普通に動くのですが、設定した時間にユーザーフォームが開かれてるとマクロが動いてくれません。

そしてユーザーフォームは常に開かれている状態なんです。

希望としてはユーザーフォームが開かれている(入力している)時でも、はじめにメッセージボックスなどで「今からメール送信します。しばらくお待ちください。」などとメッセージを出して現状まで入力済みのデータ(ブックを)メールを送信させることが出来るのが希望です。

タイマーのマクロはWorkbook_Openに
指定時刻 = TimeValue("07:30:00")
待ち時間 = TimeValue("00:01:00")
Application.OnTime TimeValue(指定時刻), "SendMail", TimeValue(待ち時間)
  Call 次のメール送信

みたいな感じで書いてます。

ユーザーフォームが開いている状態でタイマーのマクロ(他のマクロ)を動かすのって無理なんですか?

ちなみに、不定期なタイマーの方法がわからなかったので、それもわかれば教えていただけませんか。
一定時間感覚のタイマーはあったのですが、不定期なタイマーのマクロが調べても見つからず…
タイマーのマクロを何個も書いてなんとか、一つのタイマー処理が終わったら次のタイマーマクロを呼び出すって方法を取りました。
もし、もっと簡単な書き方などあったらアドバイスお願いします。

A 回答 (2件)

Ontimeの呼び出し先を次のようにしてください。


Public Sub SendMail()
UserForm1.Hide
'sendmail
UserForm1.Show
End Sub

>>不定期なタイマーの方法<<
どんなことをイメージしているのかわからないのですが
変数で指定するだけでいいと思いますが・・・
  dim tm as string
 tm= 'textboxなどから取得
 指定時刻 = TimeValue(tm)
    • good
    • 0
この回答へのお礼

早い回答ありがとうございます!
Hideなんてワザがあったんですね(笑)
ユーザーフォームを閉じるのはUnloadばかりしていてそれで閉じると入力情報も消えていたので助かりました!

不定期なタイマーは、例えば13時、14時、16時、19時、20時みたいに規則性のない時間でメールを送信(マクロ起動)をしたいのです。
時間は外部からではなく、設定しときたいのです。
現段階でその不定期な時間が決まってないのですが、これから決まるので先に作っときたいのです。
一つのマクロで実現は可能ですか?
よろしければ再度回答お願いします!

お礼日時:2009/10/07 01:35

>不定期なタイマーは、例えば13時、14時、16時、19時、20時みたいに規則性のない時間でメールを送信(マクロ起動)をしたいのです。


>時間は外部からではなく、設定しときたいのです。

Sub SendMail()
Dim v As Variant, i As Long
'・・・・
'・・・・
'・・・・
v = Array(TimeValue("07:30:00"), TimeValue("13:00:00"), TimeValue("14:00:00"), _
TimeValue("16:00:00"), TimeValue("19:00:00"), TimeValue("20:00:00"))
For i = LBound(v) To UBound(v)
If v(i) > Time Then Exit For
Next
If i > UBound(v) Then i = LBound(v)
Application.OnTime v(i), "SendMail", TimeValue("00:01:00")
End Sub
    • good
    • 0
この回答へのお礼

回答していただいてありがとうございました。

昨日、動くかテストしてみたのですが、一つ目の時間は動くのですがそれ以降が動きませんでした。

お礼日時:2009/10/12 02:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!