アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2003で、町内回覧のチェック表を作成したとします。

その際、チェックボックスにチェックをすると、横の閲覧日に自動的に日付が表示されるようにしました。

しかし、エクセルの表を翌日に開くと日付も更新されて、常に「今日」(TODAY)が表示される状態です。

閲覧日=チェックした日の日付のままにする、具体的に教えて下さい。
こちらで検索したところVBAを使えばいいようですが・・・

■エクセルでの、日付の自動入力について
  http://okwave.jp/qa1211065.html

※添付画像が削除されました。

A 回答 (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)を繰り返す


これで質問の件ができます。
また、上記が上手くいかないときは質問者が
回答のとおりやってないことになりますので
じっくり回答を読んで初めからやり直すこと。
以上。
 
    • good
    • 1
この回答へのお礼

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

お礼日時:2009/05/31 10:44

>マクロについては基礎知識はありますが、あまり詳しくありません。


>操作方法の手順を教えて頂けたり、
>VBAのコード?をコピーペースト(もしくは一部変更するだけ)といった簡単な方法

ということは提示したコードをどこそこにコピペしなさい、
と言われれば、それを理解でき、指定の場所にコピペ、修正加筆でくるとことですね?

で、あれば簡単にできますが、その前に重要な?確認事項がありますので補足願います。
 
チェックボックスには、2種類ありコードの書き方、書く場所が違ってきますのでそれを確認します。

質問添付の画像を見るとそれがデフォルトの状態であれば、
コントロールツールボックスのCheckBoxと判断できますが、
もう一方のCheckBox(フォーム)も3D表示に設定すると
同じようになりますので、確実には判断できません。
で、次のようにして確認します。

●チェックボックスの上で【右】クリックする

(1)選択状態になれば、「フォーム」のチェックボックス
(2)何の反応もなけば、「コントロールツールボックス」のチェックボックス

ということになりますのでそれを教えてください。
 

この回答への補足

<セル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)

補足日時:2009/05/28 15:58
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/28 15:59

現在は、「フォーム」のチェックボックスを使い、チェックの結果をF6にリンクしているようですね。



「フォーム」のチェックボックスは、チェックをイベントとして扱えなかったように思いますので、現在のままでは無理だと思います。
「コントロールツールボックス」のチェックボックスでしたら、チェックをイベントとして取得できますので、その時の日付をセルに入れる事が可能です。

「コントロールツールボックス」のチェックボックスをシート上に貼り付けて、以下の様なマクロを入れて見てください。

Private Sub CheckBox1_Click()
 If CheckBox1.Value = True Then
  Range("E6") = Now()
 End If
End Sub

でも、質問や補足を見る限りではご自分で修正は難しそうな感じですね。
もっと詳しい人に頼んで作り直してもらっては?
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/28 16:01

>セル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だと思います。

その際 元々の構文に あなたがチェックを入れたセルを選択するような
構文があると思うので それを削除しないと永遠にそのセルしか対応しなくなるのでご注意ください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/28 16:00

#1ですが、まず チェックボックスにチェックを入れた時に


どのセルがアクティブになるのかが分からないと「そのまま貼り付けられる構文」は提示出来ませんよ?
(そもそも僕にそこまで出来るかは疑問ですが。。)

ちなみに この1行がすでに「値で貼り付け」の構文です。
 Selection.PasteSpecial Paste:=xlPasteValues

チェックを入れた後に閲覧日のセルがアクティブになるのであれば
上の構文を入れるのみでOKでしょうが、そもそも「どうしてチェックを入れたら日付が入るのか」
が分かっていないと その後の動作へ繋げ方が分からないです。

アクティブセルを変更する際には
Selection.Offset(行数,列数 ).Select
を使います。

あとは 本当に「=TODAY()」で日付が表示されているのか?
ここも疑問なので「値で貼り付ければ解決する」とも言い切れないですよね。
本当に関数で表示されているのであれば値で貼り付ければ解決しますが。

なので その作ってくれた人に再度依頼をした方が早いのではないでしょうか?
    • good
    • 0
この回答へのお礼

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

上記の図で、
セルE6をアクティブにしたところ
=IF(F6=TRUE,$B$3,"")
となっていました。

ちなみにB3は、
=TODAY()
です。

>作ってくれた人に再度依頼をした方が早いのではないでしょうか?
作成者本人が、チェック日=閲覧日(チェック日付のまま)にするのは難しいと言っていたので、自力で解決できないかと思い質問しました。

お礼日時:2009/05/27 13:09

>チェックボックスにチェックをすると、横の閲覧日に自動的に日付が表示されるようにしました。


すごいですね。
これ どうやってやるんですか?

やり方によってなので参考までになのですが
閲覧日をアクティブにするマクロと値で貼り付けるマクロを組み合わせるというのはいかがでしょうか?

Selection.PasteSpecial Paste:=xlPasteValues

ちょいとお試しあれ?
    • good
    • 0
この回答へのお礼

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

>チェックをすると、横の閲覧日に自動的に日付が表示~
詳細は省きますが、実はこの表は知人が作成してくれました。

>閲覧日をアクティブにするマクロと値で貼り付けるマクロを組み合わせる
マクロについては基礎知識はありますが、あまり詳しくありません。
操作方法の手順を教えて頂けたり、
VBAのコード?をコピーペースト(もしくは一部変更するだけ)といった簡単な方法を教えてもらえるとうれしいです。

お礼日時:2009/05/27 11:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています