次の方法で共有

Excel2007でセルに日付を記録する方法について

Anonymous
2012-12-25T05:24:30+00:00

=Now()とすれば日付の入力が可能ですが、Workbookを開く度に現在の日付に更新されてしまいます。

コントロールキーを押しながらセミコロン ; を押せば、日付が入力されて変更はされないことはよいのですが、Now()のように事前に埋め込んでおくことができません。

何か良い方法はありませんか。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-12-26T12:46:09+00:00

この問題、チェックボックスに拘らなければ、もう少し現実的な手があります。

1.仮にE列をチェック用のエリアとして、ここに1が入った時F列に日付をいれることにします。

2.WorkSheetのコードに

Private Sub Worksheet_Change(ByVal Target As Range)

  If Target.Column = 5 Then

    If Target.Value = 1 Then

      If Target.Offset(0, 1) = "" Then

        Target.Offset(0, 1) = Date

      End If

    Else

      If Target.Value = 0 Then

        Target.Offset(0, 1).ClearContents

      End If

    End If

  End If

End Sub

E列以外の入力は無視されますし、1、0以外には反応しないようにしてあります。

また、仮に1が入っているところに1が再入力されても、F列が空欄でなければ何もしないようにしてあります。

参考まで。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2012-12-26T11:16:54+00:00

できないことはありませんが、まあ、やめておいた方が良いと言ったレベルの話だと思います。

良く考えてはおらず、パット頭に浮かんだアイデアですので他に良い方法があるかもしれません。

1.フォームのチェックボックスでは無理だとおもいますので、ActiveXコントロールのチェックボックスを並べます。

2.各コントロールに右クリック⇒プロパティ でプロパティウィンドウを出し、LinkedCellに例えば、E1,E2・・・・

  と順番にセルを指定します。

3.ワークシートのモジュールに、下のようなコードをチェックボックスの数だけ(チェックボックス名を変える)並べます。

Private Sub CheckBox1_Change()

Dim wLinkedCell As String

wLinkedCell = CheckBox1.LinkedCell

With ActiveSheet

  If CheckBox1.Value Then

    .Range(wLinkedCell).Offset(0, 1) = Date

  Else

    .Range(wLinkedCell).Offset(0, 1).ClearContents

  End If

End With

End Sub

4.チェックボックスが変化すると、LinkedCellの右隣りにチェックが入れば日付、チェックが外れればそこがクリアされます。

これは、チェックボックスを増やすたびにコードを追加する必要があり、非現実的です。

それが嫌なら、クラスモジュールにイベントハンドリングをまとめるといったことになりますが、そんなものをわざわざ試して提供する気はありません。

ご自分でクラスモジュールを研究してください。

一つ分かっていることは、ワークシート上のコントロールの追加を自動的に検出する手段はなさそうですので、イベントのバインド処理をWorkBook_Openでやっていたとしても、チェックボックスを追加した時にバインド処理を手動で走らせる必要があるなど、あまりエレガントなものはできないはずです。

参考まで。

この回答は役に立ちましたか?

0 件のコメント コメントはありません

9 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2012-12-25T12:29:40+00:00

    VBAを扱えるなら質問にならないはずですが?

    ブックを開いた時、最初のシートのA1に本日日付が入ります。

    Private Sub Workbook_Open()

    Worksheets(1).Range("A1") = Date

    End Sub

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2012-12-25T11:25:19+00:00

    VBAで、WorkBook_Openイベントプロシージャにどのようにすればよいか教えてください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2012-12-25T05:37:16+00:00

    VBAで、WorkBook_Openイベントプロシージャを入れれば簡単にできます。

    しかし、VBAがおできにならないなら、残念ながらあきらめてください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません