• ベストアンサー

マクロ"today()"について

ボタンをクリックしてマクロを実行させます。 マクロの中に range("a1").value="today()" range("a2").value="クリック済み" と記述しています。その為クリックするとその「日付とクリック済み」が表示されますが後日ソフトを立ち上げるとクリックしないのに日付がその日その日に更新されます。この日付が更新されずにクリックした日付を表示させるためにはどのように記述したらよいでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

>range("a1").value="today()" は間違いでしょう。 セルにはtoday()と言う文字列が入るだけです。 range("a1").value="=today()"とすると2004/1/24 が入りました。これは関数(演算)式がセットされています。ですからブックをオープンした時などに再計算して、オープンした日に変ります。 range("a1").value="=today()" は普通はRange("a4").Formula = "=today()"と書くと思いますが。 Range("a3").Value = Dateとすると 2004/1/24 が入りました。値(日付シリアル値)がセットされたのです。これはこのルーチンを後日実行するまでは変らないでしょう。

hoshi7777
質問者

お礼

本当にありがとうございました。

その他の回答 (2)

noname#6715
noname#6715
回答No.2

>クリックしないのに 読んでいませんでした。 一応ソース全文(短いでしょうから) 貼り付けてもらえますか?

hoshi7777
質問者

補足

ありがとうございます。range("a1").value="today()" と記述していますのでマクロを実行したことでセルA1が「=TODAY()」となっていたためと判明しました。 クリックした日付を保持する良い方法がありますでしょうか。

noname#6715
noname#6715
回答No.1

当たり前です。 today関数はそれを実行した日を 取得する関数ですから。 もし何らかの手段をとりたいのであれば、 どこかのテキストファイル(ボックスじゃないよ) に保存しておいて それを読み込むとかしないと無理です。

hoshi7777
質問者

補足

ボタンをクリックしないのにマクロが実行されるのでしょうか。

関連するQ&A

  • マクロにてセルに文字表示

    マクロで1つのセルに次の文字を表示したいのですが記述を教えて下さい、 =today()にて年月日続けて「クリックしました。」の表示です、 range("a1").value="=today()" range("b1").value="クリックしました。" この表示を A1 セルに続けて表示したいのですが、 "=today()"と"クリックしました。"を結合したいのです。

  • VBAマクロ

    マクロボタンをクリックしてマクロを実行する事において、 マクロの実行が1年に1回だけしか有効に実行されないようにする為には どのような記述をすれば良いでしようか。 2回目以降のクリックにおいては既に実行されている旨の表示が必要です。 宜しくお願いします。

  • Excelのマクロで基準日から見た日付の前後を判定したい

    Excelのマクロについて質問です。 初歩的な内容かもしれませんが よろしくお願いします。 マクロで日付を扱おうとしたのですが うまくいきませんでした。 ある日付が基準日から見て前の日か後ろの日かを 判定しようとしたのです。 たとえば セルA1に入力した日付が 今日より先ならセルB1に「1」を 後なら「2」を表示しようとして If Range("A1") > "=TODAY()" Then Range("B1") = 1 Else Range("B1") = 2 End If このようにすると セルA1にどのような日付を入れても セルB1は「2」と表示されてしまうのです。 "=TODAY()" の部分に問題があるのでしょうね。 でも、確かこれで今日という日付を 表しているのではなかったでしょうか… 日付はどのように扱われているのでしょう。 回答をお待ちしております。

  • エクセルでのTODAY関数

     TODAY関数は、そのファイルを読み込んだ日を自動的に表示させるものだと思うのですが、たとえば、平成19年1月21日にファイルを開いたとすると、その日付が設定した箇所に自動的に入力されます。  したがって、同じファイルを後日開くとその日付は、その後日、たとえb、平成19年2月1日に開くとその日付が入力されてしまいます。  たとえば、シートのある箇所の設定を シート1 契約書の契約日として、そのファイル読み込み日(ファイルを開いた日)を自動入力。ただし、日付の更新はしない。上記読み込み日に固定。 シート2 報告書の契約日として、シート1の日付を自動入力。入力日はシート1の入力日と同じこともあれば、違う日のこともある。 というような設定にするには、TODAY関数をどうカスタマイズすればいいのでしょうか。 表計算、関数、マクロはあまり得意ではありません。特にマクロはやったことがありません。よろしくお願いします。

  • マクロについて

    マクロでデータをクリアするコマンドボタンを作りました。でも、計算の答えがでなくなりました。 例えば、 A1:A10までの情報はクリアになります。 答えの“=SUM(A1:A10)”というCセルだけが前の情報のままになります。(Cセルはマクロに登録していません。) 全くのど素人で、マクロの登録も他の書類からコピーしてセルだけ変えました。 マクロの内容は、下記の通りです。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 ' Sub allclear() Application.Calculation = xlManual Range("D4").Value = "" Range("B6").Value = "" Range("B8").Value = "" Range("E11").Value = "" Range("E12").Value = "" Range("F11").Value = "" Range("B21").Value = "" Range("B23").Value = "" Range("B25").Value = "" Range("B27").Value = "" Range("B29").Value = "" Range("P5:P9").Value = "" Range("Q5:Q9").Value = "" Range("P15:P19").Value = "" Range("Q15:Q19").Value = "" End Sub よろしくおねがいします。(_ _)

  • マクロ 未来の日付を算出する その2

    まだまだ未熟な者です。 年と月と日の加算を同時に成立させて、未来の日付を表示させようかなと思っています。加算を同時成立させる方法が分からなくて、以下の方法を取りましたが、マクロがまともに動きません。以下の記述方法の場合、どの点が間違っているのでしょうか?御指導お願いします。 Sub 周期到達日を算出する(2)() Sheets("日付").Range("C6").Value = DateAdd("yyyy", Range("C3"), "1900/1/0") Sheets("日付").Range("C7").Value = DateAdd("m", Range("C4"), "1900/1/0") Sheets("日付").Range("C8").Value = DateAdd("d", Range("C5"), "1900/1/0") Sheets("日付").Range("C10").Value = Range("C3") + Range("C4") + Range("C5") + Range("C9") End Sub

  • エクセルマクロ中の再計算について

    A1 -> 11(初期値) A2 -> if(A1>10,1,2) 上記の様に表にデータが入っている場合に以下のマクロを実行した時に再計算されずにマクロの処理が進み遅くなって再計算が実行されるため正確なマクロが実行されないのですが、どうしたら確実に再計算を実行したあとにマクロが処理を継続するようにさせる事が出来るのでしょうか、よろしくお願いします。なお、実際のマクロ及び関数は違います。 Range("A1").value = 1 Calculate if Range("A2").value = 1 then  msgbox "OK" endif end 以上の場合に『OK』メッセージが表示されるものと理解していますが、表示されずに終了してしまいます。

  • =TODAY() について

    あるCell に =TODAY()を与え、ユーザー設定にて「m」とし表記「月」のみとしています。  ある行に数字 1 2 3 4 5 6 7 8 9 10 11 12 と記述しています。   やりたいことは。 TODAY() と 行の数字が等しくなった時(今は4月ですので4=4となれば・・・)、 行数字の下に「1」と表示する。(行4の下に1と表示) 月が切り替われば自動的に次の月の下に「1」が表示されるようになる。 行数字を認識して「1」を表示し月が切り替わるでのマクロは問題ないのですが。 TODAY()=4 を認識させるところでつかかってしまいます。 TODAYは「m」としているので見た目としては4ですが、認識としては=TODAY() または2011/4/5(今日の日付) または40432(表記数値)でないとイコールとして認識してくれません。 イコールの数字を1 2 3 4 5・・・と固定している為。 どうにかTODAYを4や5などの月のみで認識させたいのですが、不可能でしょうか・・? 月が切り替わると自動的に「1」の入れる月をずらしていきたいので。   色々調べましたがなかなかHITせず投稿させて頂きました。 何卒知識をお貸しいただけたら幸いと思っております。

  • EXCEL2010 マクロにつきまして

    excel vbaでマクロが作りたいのですが、まったくの初心者で 試行錯誤していますが、なかなか出来ずに困っています。 どなたか、教えていただけませんでしょうか。 ○sheet1 --日付---|A-B-C -------------------- 2013/1/20|1 2 3 2013/1/21|4 5 6 2013/1/22|7 8 9 2013/1/23|5 4 3 2013/1/24|4 5 6 2013/1/25|4 4 4 2013/1/26   ・   ・   ・ ○sheet2 実行ボタンを作成 日付を入力して実行ボタンをクリックすると指定した日付のデータが抽出される 例 2013/1/22 → 実行 A B C ------- 7 8 9 このようなマクロを組みたいのです。 わかりづらくて申し訳ありません。 また、初心者向けのおすすめの参考書や、ホームページがありましたら 教えて頂けると助かります。

  • 日付の入ったタイトルのファイルをマクロで取り込みたい

    お世話になっております。 したい事が二つありまして、 まず一つ目は毎日保存している「yyyymmdd_Balance」というタイトルのcsvファイルがあり、そこのファイル内の一部を別のエクセルファイルに貼り付けたいのです。 このファイルは他のデータより落としてきておりますので、yyyymmdd部分のみ毎日更新されます。また、当日の日付ではなく、ビジネスdayなので当日の日付ではありません。 そこで、日付け用にページをもうけ、 =IF(WEEKDAY(today)=2,TODAY()-3,TODAY()-1)をa_dateと定義し、 そのうえでマクロにて DM = Format(Range("a_date").Value, "yyyymmdd") Workbooks.Open Filename:="C:\Report\Data\DM&_Balance.csv" としたのですが、DMのところでエラーがでてしまいます。 別のファイルで同じようにしているのですが、それは正常にRunします。何が違っているのでしょうか? 2点目なのですが、今度はReportというファイルの中に毎日ビジネスdayの名前でページを追加していっています。 (10月31日に作業をおこなっているのであれば20081030という名前のページ) ここでも先程と同じように、このビジネスdayの名前のシートを選択し作業をおこなっていきたいのですが、これもどのようにマクロで記述すれば宜しいのでしょうか? どうぞ宜しくお願い致します。

専門家に質問してみよう