[英]Private Sub Worksheet_Change(ByVal Target As Range) not working
[英]Private Sub Worksheet_Change(ByVal Target As Range) not working always
我是 VBA 的初學者,我對 Private Sub Worksheet_Change 代碼有疑問 - 它並不總是有效。 我希望當 A 列中的單元格更改其值時,將其值寫入 B 列中的同一行,進行更改的 Windows 用戶。
請看下面我的代碼,用 Sheet1 編寫,而不是在模塊中:
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Sheet1").Unprotect Password:=Password
x = Target.Row
If Not Intersect(Target, Range("A" & x)) Is Nothing Then
Range("B" & x).Value = Environ("USERNAME")
End If
Worksheets("Sheet1").Protect Password:=Password
End Sub
第一步應該由編碼人員完成。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Long, pswrd As String, cell As Range, inter As Range
pswrd = "secret"
Set inter = Intersect(Range("A:A"), Target)
If inter Is Nothing Then Exit Sub
Worksheets("Sheet1").Unprotect Password:=pswrd
Application.EnableEvents = False
For Each cell In inter
x = cell.Row
Range("B" & x).Value = Environ("USERNAME")
Next cell
Application.EnableEvents = True
Worksheets("Sheet1").Protect Password:=pswrd
End Sub
編輯#1:
根據 Darren Bartrup-Cook 的建議,我們可以放棄循環:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Long, pswrd As String, cell As Range, inter As Range
pswrd = "secret"
Set inter = Intersect(Range("A:A"), Target)
If inter Is Nothing Then Exit Sub
Worksheets("Sheet1").Unprotect Password:=pswrd
Application.EnableEvents = False
inter.Offset(0, 1).Value = Environ("USERNAME")
Application.EnableEvents = True
Worksheets("Sheet1").Protect Password:=pswrd
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.