
いつもお世話になります。
Ontimeメソッドで特定日(翌営業日)の指定時刻(AM11:00)以降、最初にファイルを開いたときに、1回だけデータ繰越用のマクロを自動実行させるコードについて、2点ご教示ください。
翌営業日は「配置図」シートA3に西暦で表示(例:2020年5月11日)しています。現在の残高繰越マクロ(手動で実行)の内容は以下のとおりです。
問1.
以下のコードに追加する内容について
Sub 自動残高繰越()
Application.OnTime TimeValue("11:00:00"),"残高繰越"
End Sub
問2.
現在、ファイルを開いたときに「配置図」シートを表示させるマクロ(Sub workbook_open())があります。このマクロとの前後関係。単純に「Sub workbook_open()」の次に追加マクロとして記述するのか、「Sub workbook_open()」の内容も変更する必要があるのか
*********************
(Module1)
Sub 残高繰越()
Application.ScreenUpdating = False
If Range("B3").Value = "残高繰越済" Then
MsgBox "残高更新済みです。"
Else
Worksheets("計算表").Select
Range("K7:K46").Value = Range("I7:I46").Value
Worksheets("配置図").Select
Range("T7:U22").Value = 0
Range("E9:E13,E15,E17:E22").Value = 0
Range("D31:O31").Value = 0
Range("B3").Value = "残高繰越済"
Range("B3").Select
ActiveWorkbook.Save
End If
Application.ScreenUpdating = True
End Sub
(ThisWorkbook)
Sub workbook_open()
Worksheets("配置図").Activate
Range("A3").Select
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
>指定時刻(AM11:00)以降、最初にファイルを開いたときに、~~
というタイミングであれば、OnTimeの選択は間違いでしょう。
というかOnTimeの必要は無く、Open時に「条件を満たしていれば処理を行う」というロジックになるのではないでしょうか?
>1回だけデータ繰越用のマクロを自動実行させるコードについて~~
指定日時が書き換えられて繰り返し使われるのか等によっても若干条件は変わる可能性がありますが、いずれにしても「1回だけ」を実現するためには上記のように「時間条件を満たせば実行」だけだと、それ以降は、Openの度に何度も処理が実行されてしまいます。
これを防止して「1回だけ」を実現するためのアイデアとして、
・実行したら、比較対象の日時をクリアしておく
(クリアしても問題ない場合)
・別に記録用のセル(あるいは外部ファイル)などを利用して、実行した際の指定日時を記録jしておき、指定日時とこの値が同じならば実行しない。
などが考えられます。
ご質問について
問1
ご質問の文章が正しいとするなら、上記説明のようにOnTimeを利用することが相応しくないように思われます。
問2
ご提示のマクロは「セル選択」するだけのものなので、何かの計算処理を行うものではありません。
ですので、内容的には前でも後でも良いことになると思われます。とは言え最後に「セル選択」された状態で終わりたいのなら、先に記述しておいた方が良いかもしれません。
(無駄のない記述法をとれば、前でも後でも関係ありませんが、雰囲気からするとどうなるのかわかりませんので)
fjillin 様
早速にありがとうございました。
Sub workbook_open()の中に条件式を組み込んでいけば良いわけですね。
勉強不足でした。
いただいたアイデアを参考に、実現したいことを考えてみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロの連続印刷が突然不可能...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
一つのTeratermのマクロで複数...
-
エクセルで特定の列が0表示の場...
-
ExcelのVBA。public変数の値が...
-
Excel_マクロ_現在開いているシ...
-
Excel・Word リサーチ機能を無...
-
エクセルマクロでワードの一ペ...
-
エクセルに張り付けた写真のフ...
-
マクロ実行時エラー
-
メッセージボックスのOKボタ...
-
Excelのセル値に基づいて図形の...
-
ダブルクリックで貼り付けた画...
-
エクセルで縦に並んだデータを...
-
wordを起動した際に特定のペー...
-
Excel 改ページのVBAうまくい...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
-
VBSからエクセルのマクロを起動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
Excelのセル値に基づいて図形の...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
オートフィルターとExcelマクロ...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
おすすめ情報