1. Welcome to the forum -- please take a minute and read the FAQs in my sig
2. A more descriptive title that "Help" works better
3. This goes in the worksheet code module, not a standard Module1, ....
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rMagicCell As Range, rLogCell As Range
Set rMagicCell = Range("B4") ' <<<<<<<<<<<<<<<<<<<<<< change
If Intersect(rMagicCell, Target.Cells(1, 1)) Is Nothing Then Exit Sub
If rMagicCell.Value <= 0# Then Exit Sub
With Worksheets("Log")
Set rLogCell = .Cells(.Rows.Count, 1).End(xlUp)
If Len(rLogCell.Value) > 0 Then Set rLogCell = rLogCell.Offset(1, 0)
End With
rLogCell.Value = Now
End Sub
I didn't understand the MsgBox part of your question