Worksheet_Change
で作業しているときには、2つのことを確認する必要があります。
1)適切なエラー処理が必須
2)無限ループの可能性を回避するために.EnableEvents
をオフ。
の仮定
1)あなたがセルにA1
2の変更をキャプチャしたい)あなたがそうのように、適用を変更してくださいA2
に "S" を表示させたいです以下のコード。これは、あなたがしようとしているものを
CODE
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
If Not Intersect(Target, Range("A1")) Is Nothing Then
Application.EnableEvents = False
Range("A2").Value = "S"
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
フォロー
ですか?
これは "ThisWorkbook"コード領域に入ります。
Private Sub Workbook_Open()
Dim hiddenSheet As Worksheet
Set hiddenSheet = Me.Worksheets.Add
hiddenSheet.Visible = xlSheetVeryHidden
On Error Resume Next
Application.DisplayAlerts = False
Sheets("HiddenSheet").Delete
Application.DisplayAlerts = True
On Error GoTo 0
hiddenSheet.Name = "HiddenSheet"
Sheet1.Range("A1:D15").Copy hiddenSheet.Range("A1:D15")
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.DisplayAlerts = False
Sheets("HiddenSheet").Delete
Application.DisplayAlerts = True
On Error GoTo 0
End Sub
、これは、関連するシートエリアに
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
If Not Intersect(Target, Range("A1:D15")) Is Nothing Then
Dim old_value
Application.EnableEvents = False
old_value = Sheets("HiddenSheet").Range(Target.Address).Value
If Target.Value <> old_value Then
'~~> Change 1 to whatever offset that you want.
Target.Offset(0, 1).Value = "S"
End If
End If
LetsContinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume LetsContinue
End Sub
を行くHTH
シド
私はちょうど、その中に値またはテキストを変更せずにセルをクリックするとことがわかり次のセルに値 "S"を挿入します。隠しワークシートに元の値を保存したり保存したり、セルの終了時のセル値と比較する方法はありますか?このようにして、私はマウスのクリックから本物の変更を区別することができます。 – Sithelo