• ベストアンサー

Excelである条件下で指定セルの内容をクリアし

Bookを開いた際に、ある条件下で指定のセルの値をクリアしたいと考えています その条件とは TODAY関数で日付を表示してるのですが、最後にBookを開いた日付と上記の表示されている日付が異なる場合というものです (1)Bookを閉じる際に日付を取得し、どこかに保存しておく (2)次に開いた際に(1)の日付と比較して異なれば指定セルの値をクリア このような流れになるのかな?と考えているのですが未熟な為、方法がわかりません もしよい方法があればご教示いただけると有難いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>その条件とは… ●前回ブックを「開いた」時 ●前回ブックを「閉じた」時 ●前回ブックを「保存した」とき ホントは何をしたいのか、そして「実際には」何が出来たらいいのかに応じて、簡単にもメンドクサクも如何様にもなります。 作成例: ブックを(ご利用のエクセルのバージョンに応じて必要に応じてマクロ付きブックで)保存する 改めてブックを開く ブックを、エクセルウィンドウの中で最大化ではない状態で開く ブックウィンドウの左上、ブック名の左隣のアイコンを右クリックしてコードの表示を選ぶ (若しくは当該のブックのThisWorkbookシートを開く) 現れたシートに下記をコピー貼り付ける private sub Workbook_BeforeClose(Cancel as boolean) thisworkbook.save end sub private sub Workbook_Open() if datevalue(thisworkbook.builtindocumentproperties("Last Save Time")) <> date then worksheets("Sheet1").range("A1").clearcontents '指定シートの指定セルをクリア end if end sub ブックを閉じて開きなおす。

poyons99
質問者

お礼

したい事は、朝にbookを開いた際に前日の入力をクリアしたいというだけです なので、前回の保存か閉じた状態から比較できればいいのかな?と考え質問した次第です。 回答頂きましたコードでやりたい事は達成できそうなのですが クリアしたいセルが結合セルなので 下記の部分を worksheets("Sheet1").range("A1").MergeArea.clearcontents このように書き換えてみたら大丈夫だったのですが、また一つ問題が発生してしまいました。 というのもクリアしたいセルが複数(10セルほど)あるためです 上記のように一つのセルであれば動作するのですが worksheets("Sheet1").range("A1,C1,E1").MergeArea.clearcontents のように複数指定するとエラーが出てしまいます。 何か記述の仕方が間違っているのでしょうか? お手数ですが再度ご教示いただけますと幸いです。

その他の回答 (2)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

A_No.1です。 回答に書き忘れたのですが ブックにシートが1つしかないことが前提です。

  • mar00
  • ベストアンサー率36% (158/430)
回答No.1

Altキー+F11キーを押す ThisWorkbookをダブルクリックして以下を貼り付けて下さい。 Private Sub Workbook_Open() If Range("A1") <> Range("B1") Then 'クリアする処理 End If End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Range("B1") = Date End Sub クリアする場所がわからないので、'クリアする処理の部分を変更して下さい。 TODAY関数が入っているセルをA1、最後にBookを開いた日を入れるセルをB1にしています。 適宜修正して下さい。 最後にBookを開いた日を入れるセルを表示したくない場合は、書式設定すればいいと思います。

poyons99
質問者

お礼

参考にさせて頂きました ありがとうございました。

関連するQ&A

  • Excel の関数で指定条件座標の値を返す方法

    Excel を使い、複数の特定条件を満たした場合のみ、該当するセルの値を返す方法を教えてください。 下記の条件に基づいた処理をExcel関数で行うことはできるのでしょうか? VBAを使わなければ、目的とするデータの取得は無理でしょうか? ********************************************* B3に本日の日付の「月」:「=today()」書式=m"月" C3に本日の日付の「日」:「=today()」書式=d"月" A6~14の列に「月」 B5~AF5の行に「日」 B6~AF17には、ランダムな英数字を記載 【G20のセル】  ・本日の日付「=today()」に合致する座標に入力されている値を表示させる。    検索条件: B5:AF5=$D$3 (日) & A1:A17=$C$3 (月) **********************************************

  • ExcelのCountif関数の条件に関数を使いたい

    Excel2002のCountif関数の条件に関数を使用することは可能でしょうか? 今日と同じ日付のセルの数をカウントしたく、以下のように記述したのですが、カウントされませんでした。 =COUNTIF(H1:H28,"=today()") 条件を日付で記述すればカウントされるので、セルの値は正しく入力されています。 よろしくお願いします。

  • Bookを保存の際、E1セルに日付をつけたいです。

    現在E1セルにTODAYの関数にて自動で本日の日付が現れるようにしている テンプレートBookがあるのですが、Bookを保存する時はいつも日付を キーボードの 【Ctrl】+【;】( セミコロン ) 押して日付を確定させ てから保存をしてます。 しかし日付を確定し忘れる時があり、後日Bookを開いたときにTODAYの 関数を埋めている部分に以前保存した日付ではなく、今日の日付がでて しまいます。(当然ですが) Bookを保存する際、E1セルに日付を確定できるコード教えていただきた いのですがよろしくお願いいたします。

  • エクセル2010 両方の条件が真なら、指定のセルを

    エクセル2010を使っています。 画像の様なデータがあり、二つの条件に当てはまれば、指定のセルを塗潰したいと思います。 関数による方法はどの様なものなのでしょうか? よろしくお願いいたします。

  • あるセルからあるセルへリンクさせたい

    あるシートのセル(今日の日付けのセル)・・毎日TODAY関数が入っていて、変わる・・そのセルから別のブックにあるシートのカレンダー表の同じ日付けのセルにリンクさせることはできますか?つまりリンク先のセルが毎日自動的に変わる。わかりにくくてすみません。よろしくお願いします。

  • エクセルにで、Criteria(条件表)でセル参照は使えますか?

    エクセル2002を使用しております。 DSUM関数を用いていろいろやってみてはいるのですが、できないので助けてください!! <目的> データベースの「日付」フィールドに入力された値が、A1~A2の日付であるレコードの「項目A」に入力された値(数値)を合計しようとしています。(A1とA2はデータベース外にある入力用のセルです) <私が選んだ方法←できません(泣)> DSUM関数を用い、引数Criteria(条件表)のセルに、(1)A1に入力された日付以上(2)A2に入力された日付以下となるように論理式を立てたいのです。『>=A1』としてみましたが、計算されません。 条件式の立て方をアドバイスください。 また、他に良い方法がございましたら、教えていただきたいです! よろしくお願いいたします。

  • 条件付き書式 日付をいれたらグレーアウト

    Excelの条件付き書式で日付を入れたらグレーアウトさせたいです。 同じセルに文字列が入る場合もあるため、何か入っていれば、とすることが出来ないです。また、セルの強調表示ルールや、指定の値を含むセルだけの書式設定なども、日付の特定ができないため使用できないです。※セルに入る日付はTODAY含め過去になります。 何かよいお知恵はないでしょうか。

  • EXCELのセルの指定方法

    ※簡単な質問かもしれませんが、自分だけで解決できませんでしたのでご存知の方、おしえてください。 ※EXCELで、マクロではなくて、セルへ入力する関数についてです。 たとえばA3のセルに 「自分のセルの一つ上のセルの値をコピーする」 と指定したい時の記述方法を教えてください。 【具体例】 A2のセルに”goo”と直接入力されている状態のとき→ A3のセルに上記の指示を記述した関数を入力すると→ A3のセルにも”goo”と表示されるようにしたい。 また、A4にも同じ記述の関数を入力しておけば→ A4にも”goo”と表示したい。。。

  • INDIRECT関数で指定のセルを表示したい

    こちらの質問でINDIRECT関数を使って指定のセルを指定できました。 http://okwave.jp/qa/q6920409.html だたエラーになってしまします。 おそらく1つ1つ値の更新をしないといけないと思います。 これではかなり手間なのでINDIRECT関数を使って指定のセルを自動で表示できませんか? 同じフォルダ内のブックを使います。

  • Excel 条件付き書式◆ 同じ行の特定のセルを指定するには

    A列には、ずらーっと、日付の数値が入っています。 B列には、「その日の行動スケジュール」の文字列が入っています。 ”今日”になったら、その日付に該当するB列の「行動スケジュール」だけ文字の色を変えたいと思いました。 このとき、列全体を範囲指定して、「条件付き書式」を設定しようと思ったのですが、数式の書き方がわかりません。 まず、B列のBのところをクリックして列全体を指定した上で、「条件付き書式」の設定のダイアログを出し、「数式が」を選択すればいいだろうというところまではわかります。 しかし、数式において、どのように記述すると、”B列の特定のセルと同じ行にあるA列のセル”だけを選択できるようになるのかがかわかりません。 おそらく、下の●のところに、同じ行にあるA列のセルだけを指定するための記号が入ると思うのですが、手本がどこにも見つかりません。 =●●=today()

専門家に質問してみよう