• ベストアンサー

Excel2003 チェックすると日付が自動表示(日付をチェック日のままに)

Excel2003で、町内回覧のチェック表を作成したとします。 その際、チェックボックスにチェックをすると、横の閲覧日に自動的に日付が表示されるようにしました。 しかし、エクセルの表を翌日に開くと日付も更新されて、常に「今日」(TODAY)が表示される状態です。 閲覧日=チェックした日の日付のままにする、具体的に教えて下さい。 こちらで検索したところVBAを使えばいいようですが・・・ ■エクセルでの、日付の自動入力について   http://okwave.jp/qa1211065.html

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.6

回答5、myRangeです。 回答5をちゃんと読んでませんねぇ。。 ---------------------------------------------- <セルC6のマクロ> Sub Macro1() ' Macro1 Macro ****** 中略 ***** End Sub ------------------------------------------ こんなわけの分からんものを補足せよとは言ってませんが。。。 チェックボックスを右クリックして選択されるかどうか、その一言の補足要求ですよ。 要求どおりの補足を無視してなぜ自分勝手な補足をするのでしょうかねぇ、 そうは言っても書式の提示で一応目的は達成できはしますが。 ●ということで、これ以後こちらの要求を無視した場合は その時点で回答は無しということを頭にいれておくこと。 (更なる疑問点)   回答2のお礼の >上記の図でセルE6をアクティブにしたところ >=IF(F6=TRUE,$B$3,"") これからは、C6上のチェックボックスのリンクセルは、F6と判断できます。 が、今回の補足には ><コントロールの書式設定> >▲リンクするセル $G$6 と、▲リンクするセルは、G6 となってます。 ほんとのところはどうなんでしょうか。 ま、それは質問者に修正してもらうとして一応回答を書いておきます。 ■リンクセルは、F列とする ■G列だったら自分で修正すること     標準モジュールに以下のコードをコピペする。 '----------------------------------------------  Sub DateSet(RowNo)   If Cells(RowNo, "F").Value = True Then     Cells(RowNo, "E").Value = Range("B3").Value   Else     Cells(RowNo, "E").Value = ""   End If End Sub '-------------------------- Sub Check1()   Call DateSet(6) End Sub Sub Check2()   Call DateSet(7) End Sub Sub Check3()   Call DateSet(8) End Sub '------------------------------------------  上記は、C6~C8までのチェックボックス3つ分 DateSet(番号)の番号は、行番号のこと C6の上のチェックボックスだったら6になり C7の上のチェックボックスだったら7になる 要領は分かったと思いますが、 例えば、C6~C14までの9個のチェックボックスなら   '-------------------------- Sub Check1()   Call DateSet(6) End Sub   ・・・・・・   ・・・・・・   ・・・・・・ Sub Check9()   Call DateSet(14) End Sub '---------------------------- となる。 上記が済んだらVBE画面を閉じてエクセル画面にもどり以下をする   (1)C6上のチェックボックスを右クリックして     表示されるメニューで、マクロの登録をクリック (2)表示されるマクロ登録ダイアログに上記のマクロ(Check1,2,3・・・)が    表示されてるので、該当マクロを選択して、OKボタンをクリックする (3)次に、C7、8,9・・・のチェックボックスについて、     上記(1)(2)を繰り返す これで質問の件ができます。 また、上記が上手くいかないときは質問者が 回答のとおりやってないことになりますので じっくり回答を読んで初めからやり直すこと。 以上。  

noname#120826
質問者

お礼

ご回答ありがとうございました。

その他の回答 (5)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.5

>マクロについては基礎知識はありますが、あまり詳しくありません。 >操作方法の手順を教えて頂けたり、 >VBAのコード?をコピーペースト(もしくは一部変更するだけ)といった簡単な方法 ということは提示したコードをどこそこにコピペしなさい、 と言われれば、それを理解でき、指定の場所にコピペ、修正加筆でくるとことですね? で、あれば簡単にできますが、その前に重要な?確認事項がありますので補足願います。   チェックボックスには、2種類ありコードの書き方、書く場所が違ってきますのでそれを確認します。 質問添付の画像を見るとそれがデフォルトの状態であれば、 コントロールツールボックスのCheckBoxと判断できますが、 もう一方のCheckBox(フォーム)も3D表示に設定すると 同じようになりますので、確実には判断できません。 で、次のようにして確認します。 ●チェックボックスの上で【右】クリックする (1)選択状態になれば、「フォーム」のチェックボックス (2)何の反応もなけば、「コントロールツールボックス」のチェックボックス ということになりますのでそれを教えてください。  

noname#120826
質問者

お礼

ご回答ありがとうございます。 補足を追記しました。

noname#120826
質問者

補足

<セルC6のマクロ> Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/5/20 ユーザー名 : ****** ' ' Range("F6").Select Selection.Copy Range("E6").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.NumberFormatLocal = "yyyy/m/d" Range("J18").Select End Sub <コントロールの書式設定> コントロール 「値」  ●オン リンクするセル $G$6 「レ」3-D表示(3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

現在は、「フォーム」のチェックボックスを使い、チェックの結果をF6にリンクしているようですね。 「フォーム」のチェックボックスは、チェックをイベントとして扱えなかったように思いますので、現在のままでは無理だと思います。 「コントロールツールボックス」のチェックボックスでしたら、チェックをイベントとして取得できますので、その時の日付をセルに入れる事が可能です。 「コントロールツールボックス」のチェックボックスをシート上に貼り付けて、以下の様なマクロを入れて見てください。 Private Sub CheckBox1_Click()  If CheckBox1.Value = True Then   Range("E6") = Now()  End If End Sub でも、質問や補足を見る限りではご自分で修正は難しそうな感じですね。 もっと詳しい人に頼んで作り直してもらっては?

noname#120826
質問者

お礼

アドバイスありがとうございます。 自分で修正できないようでしたら、他の人にお願いしてみます。

回答No.3

>セルE6をアクティブにしたところ=IF(F6=TRUE,$B$3,"") なるほど。 >ちなみにB3は、=TODAY() まぁ上記の数式を見れば想像がつきますね。 C6のチェックボックスをクリックいた際には アクティブセルはC6のままでしょうか? であれば Selection.Offset( ,2 ).Select で 対象となるセルを移動させる必要がありますね。 僕自身チェックボックスとか あまり使ったことないので詳しくないですが 「フォーム」で作ったチェックボックスと「コントロール ツールボックス」で作ったチェックボックスでは 操作の仕方が違うような話を聞いた事がありますよ。 下記は そのまま 上手く行くかどうか分かりませんが、 一旦「チェックボックスにチェックを入れる」というマクロの記録を取ってみてください。 その後「Alt」+「F11」でVBEを起動して書かれている構文の後ろに ActiveCell.Select Selection.Offset( ,2 ).Select Selection.PasteSpecial Paste:=xlPasteValues を貼り付ければOKだと思います。 その際 元々の構文に あなたがチェックを入れたセルを選択するような 構文があると思うので それを削除しないと永遠にそのセルしか対応しなくなるのでご注意ください。

noname#120826
質問者

お礼

アドバイスありがとうございます。

回答No.2

#1ですが、まず チェックボックスにチェックを入れた時に どのセルがアクティブになるのかが分からないと「そのまま貼り付けられる構文」は提示出来ませんよ? (そもそも僕にそこまで出来るかは疑問ですが。。) ちなみに この1行がすでに「値で貼り付け」の構文です。  Selection.PasteSpecial Paste:=xlPasteValues チェックを入れた後に閲覧日のセルがアクティブになるのであれば 上の構文を入れるのみでOKでしょうが、そもそも「どうしてチェックを入れたら日付が入るのか」 が分かっていないと その後の動作へ繋げ方が分からないです。 アクティブセルを変更する際には Selection.Offset(行数,列数 ).Select を使います。 あとは 本当に「=TODAY()」で日付が表示されているのか? ここも疑問なので「値で貼り付ければ解決する」とも言い切れないですよね。 本当に関数で表示されているのであれば値で貼り付ければ解決しますが。 なので その作ってくれた人に再度依頼をした方が早いのではないでしょうか?

noname#120826
質問者

お礼

アドバイスありがとうございます。 上記の図で、 セルE6をアクティブにしたところ =IF(F6=TRUE,$B$3,"") となっていました。 ちなみにB3は、 =TODAY() です。 >作ってくれた人に再度依頼をした方が早いのではないでしょうか? 作成者本人が、チェック日=閲覧日(チェック日付のまま)にするのは難しいと言っていたので、自力で解決できないかと思い質問しました。

回答No.1

>チェックボックスにチェックをすると、横の閲覧日に自動的に日付が表示されるようにしました。 すごいですね。 これ どうやってやるんですか? やり方によってなので参考までになのですが 閲覧日をアクティブにするマクロと値で貼り付けるマクロを組み合わせるというのはいかがでしょうか? Selection.PasteSpecial Paste:=xlPasteValues ちょいとお試しあれ?

noname#120826
質問者

お礼

ご回答ありがとうございます。 >チェックをすると、横の閲覧日に自動的に日付が表示~ 詳細は省きますが、実はこの表は知人が作成してくれました。 >閲覧日をアクティブにするマクロと値で貼り付けるマクロを組み合わせる マクロについては基礎知識はありますが、あまり詳しくありません。 操作方法の手順を教えて頂けたり、 VBAのコード?をコピーペースト(もしくは一部変更するだけ)といった簡単な方法を教えてもらえるとうれしいです。

関連するQ&A