
”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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセル 日付が変わると同時にセルを空にしたいです
Excel(エクセル)
-
Excelで日付変更ごとに、自動的にデータを転記
Excel(エクセル)
-
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
-
4
ファイルのオープン時に今日の日付にジャンプ
Excel(エクセル)
-
5
月が変わったら自動でシートが複製される方法を教えてください。
Visual Basic(VBA)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
エクセルで。
Excel(エクセル)
-
8
エクセル マクロ 指定日の指定時刻にプロシージャを実行
Visual Basic(VBA)
-
9
今日の日付が入った行のデータを取得するマクロ
Excel(エクセル)
-
10
EXCELで日付をVBAで自動更新をしたいです。 具体的に説明致しますと、ファイルを開くたびにA列に
Excel(エクセル)
-
11
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
12
エクセルVBAを使ってセルに日付+通し番号を入力したい
Excel(エクセル)
-
13
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
14
エクセル:VBAで月変わりで、自動でシートを選択したい
Excel(エクセル)
-
15
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
16
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
17
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
18
エクセル マクロで指定日にメッセージ
Excel(エクセル)
-
19
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
20
◆ EXCEL自動入力日付を自動で変わらないようにする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
エクセルvbaで、別シートの最下...
-
特定のセルが空白だったら、そ...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
Excel VBAで、 ヘッダーへのセ...
-
Excelのプルダウンで2列分の情...
-
VBAでセルをクリックする回...
-
DataGridViewでコードで値を入...
-
エクセルVBAでコピーして順...
-
Excel vbaで特定の文字以外が入...
-
DataGridViewのセル編集完了後...
-
screenupdatingが機能しなくて...
-
EXCELのVBA-フィルタ抽出後の...
-
VBA初心者です。結合セルを保持...
-
実行時エラー438 オブジェクト...
-
セルに画像挿入すると、右セル...
-
VBAでセルに値が入ったときにイ...
-
Application.Matchで特定行の検索
-
VBAで検索して指定の位置に行を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報