”A3”セルに、TODAY()を入れて、平成〇〇年XX月△△日と表示させています。
マクロは、”O9”セルの値をコピーし、”O8”セルに貼り付け、”N9"セルの値を”0”にする。
としており、下記の設定をしましたが実行されません。アドバイスをお願い致します。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A3").Value Then
Sub Macro1()
'
' Macro1 Macro
'
Range("O9").Select
Selection.Copy
Range("O8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "0"
Range("N10").Select
End Sub
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
該当ブックを開いたまま、翌日を迎えた時でも、自動で実行できるようにしてみました。
下記のコードを指定のモジュールの下に張り付けてみて下さい。
【ThisWorkbook】
Private Sub Workbook_Open()
Call Update_A3
End Sub
【Sheet1】
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng As Range
Set myRng = Intersect(Target, Me.Range("A3"))
If myRng Is Nothing Then Exit Sub
Range("O9").Copy
Range("O8").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("N9").FormulaR1C1 = "0"
End Sub
【標準モジュール】
Sub Update_A3()
Dim dt As Date
dt = DateValue(Format(Now(), "yyyy/mm/dd"))
With Sheets("Sheet1")
If DateValue(Format(.Range("A3").Value, "yyyy/mm/dd")) <> dt Then
.Range("A3").Value = dt
End If
Application.OnTime dt + 1, "Update_A3"
End With
End Sub
上記のVBAはブックを開いた時、または、日が変わった時に実行されます。
日が変わった時の動作を確認するには、そのタイミングまで待つ必要があるので結構大変です。そこで、分単位で実行されるバージョンを作ってみました。
標準モジュールの Update_A3 を次のコードに置き換えて下さい。1分毎に更新されるのが確認できます。
ちなみに、A3セルの書式を時分まで見えるようにしてから実行してくださいね。
Sub Update_A3()
Dim dt As Date
dt = DateValue(Format(Now(), "yyyy/mm/dd")) + TimeValue(Format(Now(), "hh:mm:00"))
With Sheets("Sheet1")
If DateValue(Format(.Range("A3").Value, "yyyy/mm/dd")) + _
TimeValue(Format(.Range("A3").Value, "hh:mm:00")) <> dt Then
.Range("A3").Value = dt
End If
Application.OnTime dt + TimeValue("00:01:00"), "Update_A3"
End With
End Sub
No.2
- 回答日時:
>これで良いのでしょうか?
はい、良いと思いますが、ご希望の動作になるか、確認してみて下さい。
Bookモジュールに
Private Sub Workbook_Open()
Range("A3").Value =Date
End Sub
と
シートモジュールに
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Adrress = "A3" Then
Range("O8").Value=Range("O9").Value
Range("N9").Value = "0"
End If
End Sub
でも同じ動作になりませんでしょうか。
No.1
- 回答日時:
多分に
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A3").Value Then
を関数を入れているA3セルの値が変更されたら実行 と勘違いだと
これでは、関数以外のセルに日付を入れるセルがあった
その結果が、Today関数の日付と一緒だった場合に以下を実行です。
Today関数は、引数がありませんので
Private Sub Worksheet_Change(ByVal Target As Range)
では実行されません。
ご希望の動作ですが、Today関数ですので、再計算されて結果が変わるのは
1、翌日にファイルを開いだ場合
2、ファイルを開いた状態で、パソコンの電源も切らずに翌日になり
再計算を実行した場合
位しか思いつかないのですが。
運用で2のケースはないとすれば
ファイルを開いた際にVBAを実行させては如何でしょうか
イベントの Open を使います。
Today関数ではなく
range("A3").Value = date
として、開いたときにA3セルに日付を入れた方が楽だと思います。
早々に有難う御座いました。ただ、素人なものですからよく理解できません。これで良いのでしょうか?
Private Sub Workbook_Open()
Range("A3").Value =Date
Sub Macro1()
'
' Macro1 Macro
'
Range("O9").Select
Selection.Copy
Range("O8").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("N9").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "0"
Range("N10").Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
Excelで日付変更ごとに、自動的にデータを転記
Excel(エクセル)
-
エクセル 日付が変わると同時にセルを空にしたいです
Excel(エクセル)
-
EXCELで日付をVBAで自動更新をしたいです。 具体的に説明致しますと、ファイルを開くたびにA列に
Excel(エクセル)
-
-
4
月が変わったら自動でシートが複製される方法を教えてください。
Visual Basic(VBA)
-
5
今日の日付が入った行のデータを取得するマクロ
Excel(エクセル)
-
6
EXCEL あるセルに数字が入力されれば既存マクロ実行させたい
Excel(エクセル)
-
7
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
12
マクロ 実行ボタンを押さずに常に実行
Excel(エクセル)
-
13
Excelのマクロでボタンを押すと数が1足されるようにするには?
IT・エンジニアリング
-
14
エクセルファイルで指定期間に自動ポップアップメセージを出す
Excel(エクセル)
-
15
UserForm1.Showでエラーになります。
工学
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
エクセル マクロ 指定日の指定時刻にプロシージャを実行
Visual Basic(VBA)
-
18
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
19
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
20
エクセルVBA オプションボタンのチェックを外したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
EXCELで変数をペーストしたい
-
Excel VBA、 別ブックの最終行...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
TODAY()で設定したセルの日付...
-
【Excel】指定したセルの名前で...
-
screenupdatingが機能しなくて...
-
エクセルvba:自己セルの情報取...
-
【Excel VBA】指定行以降をクリ...
-
Excel VBAで比較して数値があっ...
-
連続する複数のセル値がすべて0...
-
DataGridViewの各セル幅を自由...
-
実行時エラー438 オブジェクト...
-
Excelのハイパーリンクにマクロ...
-
3桁または4桁の数値を時刻に...
-
特定の文字を条件に行挿入とそ...
-
VBからEXCELのセルの値を取得す...
-
クリックしたセルに色を付けるV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報