• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:月日を入力して指定した年の同日にすることは可能?)

エクセルで指定した年の同日を扱う方法

このQ&Aのポイント
  • エクセル2010を使用していますが、指定した年の同日を扱う方法について教えてください。
  • 通常、エクセルで月日を入力するとパソコンに設定された年の同日として扱われますが、指定した年の同日をエクセル上で扱う方法を知りたいです。
  • セルを別に作って入力した日付から1年引いた同日を表示する方法以外で、自動で指定した年の同日を扱う方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.12

ぎゃっはっはぁ~! 質問の嵐ですね! (1) Private Sub Worksheet_Change(ByVal Target As Range) 'この行から '対象セルがA3~A10以外、または対象セルが複数セルならなにもしない If Intersect(Target, Range("A3:A10")) Is Nothing Or Target.Count <> 1 Then Exit Sub 対象セルが複数セルなら何もしない、とはどういう意味でしょうか? 複数のセルを一度に操作する場合(一括で複数セルの値・式などをデリート、同じ値をCtrl+Enterで入れるなどの場合を想定しているのでしょうか? ※ 簡単にいえばそういうコトです、何度も同じセルに入力する場合データ消去の作業もあるかと思います。 その場合、複数セルをまとめて消去という操作も考えられますので、 念のためのエラー回避です。 (2) また、セル範囲をA3からA10,だけでなく、A25からA30も対象になるとしたら、 のようにセル範囲が飛び飛びの場合は If Intersect(Target, Range("A3:A10,A25:A30")) Is Nothing Or Target.Count <> 1 Then Exit Sub のように カンマで区切ります。 (3) 「Value」とは何かの値を格納した変数ですか? .Value と必ず「.」がついているコトに注意してください。 >With Target とつながっています。 主語は Target になります。 何度も同じ○○・・・と入力せずに With ○○ とすれば○○部分が省略できます。 Withなしで書けば >If IsDate(Target.Value) Then のような感じになります。 (4) 「If IsDate(.Value) Then」が効いていなかったとしたら、どういう効果があるのでしょうか? ※ 数値はシリアル値として認識されますが、仮に文字列を入力した場合は日付として認識されませんので 何の変化もありません。 (5) 'イベントを無効にする(無限ループに陥らないようにするため) Application.EnableEvents = False 一度無限ループを経験されると判るはずです。 新しくExcelを立ち上げ↓のコードをコピー&ペーストしてA1セルに何らかの数値を入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Range("A1") = Range("A1") / 2 End Sub 上記ではA1セルは入力した数値÷2 仮に100を入力すれば50という結果になってほしいのですが 無限ループに陥りとんでもない数値になります。 ワークシートChangeイベントですので、A1セルデータ変更があるたびにマクロが実行されますので これが無限ループになってしまいます。 これを Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Range("A1") = Range("A1") / 2 Application.EnableEvents = True End Sub というコードにすれば1度だけマクロが実行され、仮に100と入力した場合は50が表示されます。 最後に 今回の質問の場合、無限ループに陥らないのはたまたまだったと思った方が良いと思います。 >If Year(.Value) <> Range("A1") Then が一度実行されると、Targetの「年」の値とA1セルの数値が同じになるため 無限ループが回避されると思います。 前回も書いたように当方が投稿したコードは結構無駄が多かったかもしれませんが、 以上のようなコトを考慮してのコードでした。 じっくり検証すればもっと簡単なコードにできたかもしれませんが、 あの時点ではあの程度のコードしか思いつかなかった次第です。m(_ _)m

qazxcvfr4
質問者

お礼

大変ありがとうございます。 ようやくわかってきたと思います。 何度もお世話になりました。

すると、全ての回答が全文表示されます。

その他の回答 (11)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 パソコンのモニターの右下などに表示されているカレンダー兼時計を調整して、現在の日付を2013年の日付に変更してしまえば、自動で2013年の日付にする事は出来ますが、入力操作が終わった後で、カレンダーを元に戻しておかなければ、2014年のデータを打ち込む際等に何らかのトラブルの元になる恐れがあるかも知れませんので面倒です。  ですから、御質問の趣旨とは少し異なりますが、日付を入力し終えてから、2013年の日付にしておきたい範囲をまとめて範囲選択し、Excelの置換機能を使用して、「2014/」を「2013/」に[すべて置換]してしまわれては如何でしょうか? 【参考URL】  Word や Excel の "置換" 機能で簡単に変換したい-Microsoftサポート   http://support.microsoft.com/kb/906326/ja

qazxcvfr4
質問者

お礼

ありがとうございます。 そういった方法もございますが、今回はそれでは解決策にならないんです((+_+))

すると、全ての回答が全文表示されます。

関連するQ&A