[英]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.