以下の変更を参照するようにコードが更新されました。
このログ システムは、Log.txt と呼ばれる Excel の外部ドキュメントを作成します。log.txt ファイルに次のような行が作成されます。
11:27:20 AM Matthew Ridge がセル $N$55 を ss から ss に変更しました
誰かが新しいコード行をシートに入力したかどうかはわかりませんが、コードが回答を要求している場合は、その回答がどのセルにあるかがわかります。以下のコードは、Mac と PC の両方のシステムを組み合わせて機能するはずです。人々がそれを見つけたら、言ってください。
このコードは、ここの人々の助けを借りて作成されたものであり、他の形式であるため、ドキュメントの独占所有権を取得することはできませんが、概念の所有権を取得することはできます。だから、助けてくれた人たちに感謝します.これがなければ、私の意見ではExcelの実行可能なログシステムはありません;)
ところで、だれかがびっくりして、このコードがどこにあるのか尋ねる前に、一般/新しいエンド ユーザーには明らかではありません。[開発者] タブを開いて [Visual Basic] をクリックし、新しいウィンドウが開いたら Microsoft Excel オブジェクトを探す必要があります。そのフォルダーの下にワークブックがあるはずです。コードを配置するシートをダブルクリックして、ThisWorkbook の下または任意のシート内に配置できます。
シートが右側のパネルで開かれると、Option Explicit が表示されます。そうでない場合は、Require Variable Declarationがチェックされていることを確認して有効にすることをお勧めします。これは再び Visual Basic ウィンドウに表示され、次のパスをたどります。
ツール->オプション->エディタ。
チェックされている場合は心配ありませんが、チェックされていない場合はチェックしてください。Option Explicit はコードにとって良いことであり、変数を宣言することを強制します。これは、最初は良い方法です。
検証後、以下のコードをコピーして、必要に応じてワークブックまたは特定のシートに貼り付けることができます。
バージョン 2.01
Option Explicit
Dim PreviousValue
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sLogFileName As String, nFileNum As Long, sLogMessage As String
sLogFileName = ThisWorkbook.Path & Application.PathSeparator & "Log.txt"
On Error Resume Next ' Turn on error handling
If Target.Value <> PreviousValue Then
' Check if we have an error
If Err.Number = 13 Then
PreviousValue = 0
End If
' Turn off error handling
On Error GoTo 0
sLogMessage = Now & Application.UserName & " changed cell " & Target.Address _
& " from " & PreviousValue & " to " & Target.Value
nFileNum = FreeFile ' next file number
Open sLogFileName For Append As #nFileNum ' create the file if it doesn't exist
Print #nFileNum, sLogMessage ' append information
Close #nFileNum ' close the file
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
PreviousValue = Target(1).Value
End Sub
時間が経つにつれて、このコードを更新して、適切と思われる機能を追加しようとします。
繰り返しになりますが、これを可能にしてくれたすべての人に感謝します。