[[20110822121904]] 『最終更新日の表示』(KJS) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『最終更新日の表示』(KJS) Excel2003 WindowsXP
 過去ログを見ましたが探せませんでした。
 1つのブックの中に同じフォーマットのシートが多数あります。
 元のシートをコピーして使用しています。
 (V1:W1)の結合セルに最終更新日(開いたのみの場合には更新しない)を表示したい。

 過去ログを見て全てのシートが更新する方法は解ったのですが
 変更したシートのみ更新する方法を教えて下さい。

 現在の設定はこのようにしてあります。(全てのシートが変更)

 標準モジュール(Module2)に下記を貼付
 Function LastSaveTime()

      Application.Volatile
      LastSaveTime = ThisWorkbook.BuiltinDocumentProperties.Item(12).Value

 End Function

 セルV1  =LastSaveTime()

 こんなことでいいのかな?
 ThisWorkbookに

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     Application.EnableEvents = False

     Sh.Range("V1").Value = Date
     Application.EnableEvents = True

 End Sub
 って記入しとくと各シートに何か入力したりしたときに自動でそのシートのV1セルにその時の日付が入るよ。
 (春日野馨)

 お世話になりました。
 変更しないシートを開いて1部分をクリックしただけで日付が変わりました。
 シートの中身を変更した時のみ更新日が変わるようにできないでしょうか?
 (KJS)

 Workbook_SheetChange
 じゃなくて
 Workbook_SheetSelectionChange
 に記述してるってことは無いかな?

 後は各シートの
 Worksheet_SelectionChange
 になにかシートに書き込むようなマクロがあったりしないかな?

 (春日野馨)

 ありがとうございます。

 >なにかシートに書き込むようなマクロがあったりしないかな?
 私は、プログラムが解らないので知人に作ってもらったプログラムが入っています。
 該当するセルに変化があった場合に再計算すると聞いています。

 シートの変更はせずに セルをクリックした場合 日付は変わりませんが、ダブルクリックの場合には変わりました。
 対応策は有りますか?
 (KJS)

 ダブルクリック対策は一応できたんだけどF2キー対策はできてません。
 どちらも更新しないんだったらEscキーで抜けてくれたら特に対策はいらないんだけども…

 ThisWorkbookに

    Dim wk_Range    As Range
    Dim wk_Text     As String

 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
     Set wk_Range = Target
     wk_Text = Target.Value
 End Sub

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.EnableEvents = False
    If Not wk_Range Is Nothing Then
        If wk_Range.Address = Target.Address Then
            If wk_Text = Target.Value Then
                Application.EnableEvents = True
                Exit Sub
            End If
        End If
    End If

     Sh.Range("V1").Value = Date
     Application.EnableEvents = True

 End Sub

 (春日野馨)

 教えていただき有り難う御座います。
 大変申し訳有りませんが急用が出来ましたので明後日に返信させていただきたいと思います。
 (KJS)

 ありがとうございます。
 遅くなって申し訳ありません。
   Dim wk_Range    As Range
    Dim wk_Text     As String

  Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal TargetAs    Range,      Cancel As Boolean)
     Set wk_Range = Target
     wk_Text = Target.Value  ←ここで「形が一致しません 」にてプログラムストップする。
 End Sub
 お願いいたします。
 (KJS)

 ダブルクリックしたセルに入力されてる式がエラーの場合だったら対処はあるけど、ダブルクリックしたときは
 必ず「型が一致しません」になるの?

 ダブルクリックしたセルがエラーの時だけだったら
 wk_Text = Target.Text
 にしてみて。
 (春日野馨)


 お世話になっています。
 wk_Text = Target.Text に直したら動きました。
 いろいろな使い方をしてみたら
 最終更新日が変わる場合と変わらない場合が有ります。

 あるセルをクリックし、別のセルにクリック移動した場合は OK でした。

 あるセルをダブルクリックし、別のセルにクリック移動した場合は
  単一セル → 単一セルの移動時 OK
  単一セル → 結合セルの移動時 OK 
   結合セル → 単一セルの移動時 更新した 
  結合セル → 結合セルの移動時 更新した

 対処方は有りますか?
 (KJS)

 >Set wk_Range = Target
 を
 Set wk_Range = Target(1, 1)
 にしてみて。
 (春日野馨)

 お世話になりました。

 セルの内容変更に対しては私の思う通りに最終更新日の表示が出来ました。

 罫線及び図形描写の変更に対応する方法は有りますか?

 それから 下の意味を教えていただけませんか?
 >Set wk_Range = Target
 を
 Set wk_Range = Target(1, 1)
 にしてみて。
 (KJS)


 >罫線及び図形描写の変更に対応する方法は有りますか?
 こっちは誰かほかの人の助言を待って。

 >>Set wk_Range = Target
 >を
 >Set wk_Range = Target(1, 1)
 結合セルをダブルクリックしたときは結合されてるセル全体がTargetになるけど、シートチェンジの時は
 結合されてるセルのうち一番左上のセルがTargetになるんで、ダブルクリックの時にシートチェンジに合わせて
 Targetセルの1行め1列目(一番左上のセル)を持って行くようにしたよ。
 (春日野馨)


 大変有り難う御座いました。

 説明していただき感謝致します。

 使わせていただきます。
 (KJS)

 (春日野馨)さんの助言により セルの内容変更に対して、最終更新日の表示が出来ました。
 現在使用中ですが、罫線及び図形描写の変更に対応する方法のアドバイスをいただけませんか?
 印刷して(目で見て)変化が有れば最終更新日を更新したいと思います。
 (KJS)

 >印刷して(目で見て)変化が有れば最終更新日を更新したいと思います。
 で、この日付の更新を「手作業で実行するがマクロでやりたい」のですか?

 V1セルに適当に何か文字を入れたら、勝手にその時の日付が入ると思いますが。。。
 昨日変更して今日チェックをして、V1セルに昨日の日付を入れたい場合が有る
 とか言うことなんでしょうか。。。?

 (HANA)

 表現が下手で申し訳ありません。
 V1 セルは自動的に最終更新日を表示したく、入力はしません。
 V1 セル以外の所を操作します。

 上記で教えていただいたプログラムを使用して気が付いた事ですが
 空白の結合セルをダブルクリックした場合は異常有りませんが、
 文字等が入っている結合セルをダブルクリックすると 「実行時エラー '94':」Nullの使い方が不正です
 が表示され「デバック」をクリックすると
   wk_Text = Target.Text       のところが黄色になっています。
 対応策は有りますか?
 (KJS)  


 罫線や図形に関しては、自動では難しいので
 >印刷して(目で見て)変化が有れば最終更新日を更新したいと思います。
 と言う事にしたのですよね?

 あ、だからこの件は解決だったって事か。
 何か勘違いしてましたね。済みません。

 >文字等が入っている結合セルをダブルクリックすると 「実行時エラー '94':」Nullの使い方が不正です
 に関しては

 試した訳ではありませんが
 >>結合セル → 結合セルの移動時 更新した
 >>対処方は有りますか?
 の時に
 >Set wk_Range = Target → Set wk_Range = Target(1, 1)
 に変更しましたが、この時の原因が「結合セルだった」と考えるなら
 今回も同じ「結合セル」の問題と考えて、同じ様に変更すれば良いのでは。。。?

 やってみたけど駄目だったのかな?

 (HANA)

 私の知識不足で解りません 
 >同じ様に変更すれば良いのでは。。。?
 どこを変更すれば良いか教えてください。
 (KJS)

 前の時には Set wk_Range = Target の
 Target を Target(1, 1) に替えたので
 今回の wk_Text = Target.Text も
 Target を Target(1, 1) に変更。
     wk_Text = Target(1, 1).Text
                       ~~~~~~
 やってみる価値は有ると思いますが、駄目だったらごめんなさい。
 その場合、他の方のレスをお待ち下さい。

 (HANA)


 大変有り難う御座います。出来ました。

 罫線及び図形描写の変更のみは手作業で行う事として使わせていただきます。
 (KJS)



コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.