VBAについてT列セルにある、2025/1/7などを2026/1/7へ置換したく、下記のコードを入れたのですがまったく置換されません。どうしてでしょうか?Range(\u0026quot;T:T\u0026quot;).Replace What:=\u0026quot;2025/1/\u0026quot;, Replacement:=\u0026quot;2026/1/\u0026quot;

1件の回答

回答を書く

1101481

2026-02-17 14:10

+ フォロー

セルの日付の値は書式設定を反映して2025/1/7と表示されていて、実際の値はシリアル値で保存されています。(45658のような数値)

Replaceは文字列に対して動作するので日付に対してその処理は出来ません。

強制的にセルの表示を文字列に変換してからReplaceする方法もありますが、今の目的であれば年度の修正が目的と思いますので、DateAddを使えばよいです。

例としてB3B4セルを指定した見本書いておきます。この例は指定範囲の全セルに繰り返し処理をするのでB:Bの様に列全部指定すると処理時間がかなり伸びます。

動作内容はコード内コメントで説明いれています。年度の修正と思ったので1月かどうかは入れていませんが、25年1月のみを26年に替えたいのであれば

If Year(Cel.Value) = 2025 And Month(Cel.Value) = 1 Then

とすればいいです。



Sub Test()



Dim Cel As Range



For Each Cel In Range(\u0026quot;B3:B4\u0026quot;) '指定したセル範囲に対して繰り返し

If IsDate(Cel.Value) Then '値が日付の場合

If Year(Cel.Value) = 2025 Then '2025年の場合

Cel.Value = DateAdd(\u0026quot;yyyy\u0026quot;, 1, Cel.Value) 'セルの日付に1年追加

End If

End If

Next



End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有