Vba Excel单元格值中的更改插入一个“;S";在另一个牢房里
我已经粘贴了工作表1。请注意这些列。要监控的一个在标题描述和Healthman下。在“更改”列下发生更改后,将插入一个S。例如,眼镜架更改为规格架,我们在更改中插入了S。“更改”列为空。在Healthman下,当价格发生变化时,在“变化”列下插入一个P。当要删除产品时,即删除行,在“更改”下插入X。当插入一行时,因为我正在逐单元格与隐藏的工作表单元格进行比较,这就是我更新隐藏工作表的原因。我尝试了前面的代码,但它不起作用,我想粘贴工作表供您审阅。Vba Excel单元格值中的更改插入一个“;S";在另一个牢房里,vba,excel,Vba,Excel,我已经粘贴了工作表1。请注意这些列。要监控的一个在标题描述和Healthman下。在“更改”列下发生更改后,将插入一个S。例如,眼镜架更改为规格架,我们在更改中插入了S。“更改”列为空。在Healthman下,当价格发生变化时,在“变化”列下插入一个P。当要删除产品时,即删除行,在“更改”下插入X。当插入一行时,因为我正在逐单元格与隐藏的工作表单元格进行比较,这就是我更新隐藏工作表的原因。我尝试了前面的代码,但它不起作用,我想粘贴工作表供您审阅。 图例:P=价格变动 N=新X=已删除S=说明 代
图例:P=价格变动
N=新X=已删除S=说明
代码更改描述HEALTHMAN
40501 Spectacle Frame
40609 Sunglasses
40525 S Ready Made Optical
41008 Spectacle Case
43025 P Transfer - Zyl or Metal Frame 198.00
43126 P Transfer - Nylon Supra Frame 314.00
43136 P Transfer - Rimless Frame 359.00
您可以使用工作表更改事件。参见示例和 要添加到工作表的示例代码-A3将在您更改另一个单元格时自动更改,如果更改的单元格为A1,则具有特定行为:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
Range("A3") = "You changed A1"
ElseIf Target.Address <> Range("A3").Address Then 'to prevent a change of A3 to trigger an update
Range("A3") = "You changed another cell"
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Address=Range(“A1”).Address,则
范围(“A3”)=“您更改了A1”
ElseIf Target.Address Range(“A3”).Address Then“防止A3更改以触发更新
范围(“A3”)=“您更改了另一个单元格”
如果结束
端接头
您可以使用工作表更改事件。参见示例和
要添加到工作表的示例代码-A3将在您更改另一个单元格时自动更改,如果更改的单元格为A1,则具有特定行为:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("A1").Address Then
Range("A3") = "You changed A1"
ElseIf Target.Address <> Range("A3").Address Then 'to prevent a change of A3 to trigger an update
Range("A3") = "You changed another cell"
End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
如果Target.Address=Range(“A1”).Address,则
范围(“A3”)=“您更改了A1”
ElseIf Target.Address Range(“A3”).Address Then“防止A3更改以触发更新
范围(“A3”)=“您更改了另一个单元格”
如果结束
端接头
在使用工作表\u Change
时,您必须确保两件事
1)必须进行适当的错误处理
2)关闭。启用事件
,以避免出现无休止的循环
假设
1)您想捕获单元格A1中的更改
2)您想在A2中显示“S”
因此,请根据以下代码中的适用情况进行更改
代码
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
Private子工作表\u更改(ByVal目标作为范围)
关于错误转到哇
如果不相交(目标,范围(“A1:D15”))则为零
模糊旧值
Application.EnableEvents=False
旧值=工作表(“HiddenSheet”).Range(Target.Address).value
如果目标值为旧值,则
“~~>将1更改为所需的任何偏移量。
Target.Offset(0,1).Value=“S”
如果结束
如果结束
让我们继续:
Application.EnableEvents=True
出口接头
哇
MsgBox错误说明
继续
端接头
嗯
Sid在使用工作表\u Change
时,您必须确保两件事
1)必须进行适当的错误处理
2)关闭。启用事件
,以避免出现无休止的循环
假设
1)您想捕获单元格A1中的更改
2)您想在A2中显示“S”
因此,请根据以下代码中的适用情况进行更改
代码
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
Private子工作表\u更改(ByVal目标作为范围)
关于错误转到哇
如果不相交(目标,范围(“A1:D15”))则为零
模糊旧值
Application.EnableEvents=False
旧值=工作表(“HiddenSheet”).Range(Target.Address).value
如果目标值为旧值,则
“~~>将1更改为所需的任何偏移量。
Target.Offset(0,1).Value=“S”
如果结束
如果结束
让我们继续:
Application.EnableEvents=True
出口接头
哇
MsgBox错误说明
继续
端接头
嗯
Sid我注意到,如果只单击单元格而不更改其中的值或文本,它会在下一个单元格中插入一个值“S”。是否有办法将原始值保存或存储在隐藏的工作表中,并将其与单元格退出时的单元格值进行比较。通过这种方式,我可以区分真正的更改和鼠标单击。我注意到,如果我只单击单元格而不更改其中的值或文本,它会在下一个单元格中插入一个值“S”。是否有办法将原始值保存或存储在隐藏的工作表中,并将其与单元格退出时的单元格值进行比较。通过这种方式,我可以将真正的更改与鼠标单击区分开来。我知道您正在尝试做什么。我提供的代码可以工作,但您必须修改它以满足您的需要。你上传的文件没有我提供的代码。您必须使用上述代码并进行必要的更改。一旦完成,然后重新上传文件,以便我可以看到你理解代码。这也太长了。除了有链接的帖子,你能删除上面所有的评论吗?我也会这么做你把代码贴在“教授费历史记录”上了吗?你不应该在“Sheet1”中发布代码吗?你为什么用“C1:G15”?这就是你想要捕捉的范围吗?非常感谢。我已经把它贴在床单上了。是的,我想跟踪描述、健康人和光学助手。我喜欢代码。它起作用了。不过我有个问题。什么时候