0

重複の可能性:
VBA を使用した Excel シートの Date Modified Time Stamp

こんにちは、私は Excel ワークブックを持っています...ワークブックのシート 2 の任意の行または列で行われた最新の変更について、シート 1 のセル A2 にタイム スタンプを書き留めたいと思います。

したがって、私の問題は 2 つあります。1. 最新の変更時刻を追跡したい。2. シート 1 のセル A2 をユーザー保護として作成し、トレースされたタイム スタンプを誰も改ざんできないようにしたい。これが私が取り組んでいたコードです...そして何もしていないので正しくありません..もしそれがbbenに何かをさせたなら、間違いなく私がそれを共有しても問題はありませんでしたが、何もしていないので少し役に立たない。

       Private Sub worksheet_change(ByVal Target As Range)
       Dim Row, Col

       For Row = 2 To Sheet2.UsedRange.Rows.Count
       For Col = 1 To Sheet2.UsedRange.Columns.Count
       If Target.Cells(Row, Col) Then
       Application.EnableEvents = False
       Sheet1.Cells("A2") = now()
       Application.EnableEvents = True
       End If
       Next Col
       Next Row

       End Sub        
4

1 に答える 1

0

正しい方向に向かうには:

  • シート 2 のシート タブを右クリックします。
  • 「コードを表示」を選択します。
  • モジュールの上部に 2 つのドロップダウンが表示されます。最初に「ワークシート」を選択します。2 つ目で「変更」を選択します。
  • これにより、ユーザーが Sheet2 の値を変更するたびに実行される Worksheet_Change プロシージャのテンプレートが作成されます。
  • それを使用して、シート 1 のセル A2 にタイム スタンプを書き込みます。

問題の 2 番目の部分では、シート 1 を保護します。コードでは、次のようになります。

ThisWorkbook.Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

セル A2 に書き込む前に、まず保護を解除します。

ThisWorkbook.Worksheets("Sheet1").Unprotect

パスワードを追加する場合は、ヘルプで保護および保護解除の方法を調べてください。

(パスワードを使用しても、シートの保護はかなり弱いことに注意してください。カジュアルな作業では問題ありませんが、ユーザーがそうすることに決めた場合は、ユーザーによってクラックされる可能性があります。より良いアプローチは、値をシートに書き込むことです。これには xlVeryHidden の表示プロパティがあるため、ほとんどのユーザーはそれがそこにあることさえ知りません (VBA プロジェクトに保護を適用した場合)。繰り返しますが、クラックできないわけではありませんが、表示シートにあるよりはましです。)

于 2012-12-02T08:30:54.643 に答える