Vba 工作表_更改:删除整列值,在此操作之前标识非空单元格
我有一个工作簿,其中有一个主工作表用于输入,主工作表中的值根据主工作表中“type”列的单元格值复制到两个子工作表中 子工作表中针对这些复制单元格的“注释”列中的任何值都将作为注释添加到主工作表的相应行中。当子工作表中的“注释”列中的值立即删除时,我希望在此操作之前识别非空单元格,并删除主工作表中的相应注释 目前,我已经编写了代码,如果在子工作表的“注释”列中添加/删除一个值,该值将在主工作表的相应条目中添加/删除注释Vba 工作表_更改:删除整列值,在此操作之前标识非空单元格,vba,excel,comments,worksheet,Vba,Excel,Comments,Worksheet,我有一个工作簿,其中有一个主工作表用于输入,主工作表中的值根据主工作表中“type”列的单元格值复制到两个子工作表中 子工作表中针对这些复制单元格的“注释”列中的任何值都将作为注释添加到主工作表的相应行中。当子工作表中的“注释”列中的值立即删除时,我希望在此操作之前识别非空单元格,并删除主工作表中的相应注释 目前,我已经编写了代码,如果在子工作表的“注释”列中添加/删除一个值,该值将在主工作表的相应条目中添加/删除注释 Private Sub Worksheet_Change(ByVal
Private Sub Worksheet_Change(ByVal Target As Range)
Dim temp As String
Dim tem As String
With Target
If .Count = 1 And .Column = 8 And .Row < 600 Then
tem = .Row
If Sheets("Parts- input").Cells(tem, 8).Comment Is Nothing Then
If Sheets("Pins").Cells(.Row, .Column).Value = "" Then
Sheets("Parts- input").Cells(tem, 8).Comment.Delete
Else
Sheets("Parts- input").Cells(tem, 8).AddComment "Lifts Sheet: " & Sheets("Pins").Cells(.Row, .Column).Value
End If
Else
If Sheets("Pins").Cells(.Row, .Column).Value = "" Then
Sheets("Parts- input").Cells(tem, 8).Comment.Delete
Else
Sheets("Parts- input").Cells(tem, 8).Comment.Text "Lifts Sheet: " & Sheets("Pins").Cells(.Row, .Column).Value
End If
End If
End If
End With
End Sub
Private子工作表\u更改(ByVal目标作为范围)
作为字符串的Dim temp
将tem设置为字符串
有目标
如果.Count=1,.Column=8,.Row<600,则
tem=.Row
如果表格(“零件输入”)。单元格(tem,8)。则注释为空
如果表格(“引脚”).Cells(.Row,.Column).Value=”“则
表格(“零件-输入”)。单元格(tem,8)。注释。删除
其他的
表格(“零件-输入”).单元格(tem,8).AddComment“提升表格:”&表格(“引脚”).单元格(.Row,.Column).Value
如果结束
其他的
如果表格(“引脚”).Cells(.Row,.Column).Value=”“则
表格(“零件-输入”)。单元格(tem,8)。注释。删除
其他的
表格(“零件-输入”).单元格(tem,8).Comment.Text“提升表格:”&表格(“引脚”).单元格(.Row,.Column).值
如果结束
如果结束
如果结束
以
端接头
只要玩一下你的代码,我就结束了:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 And .Column = 8 And .row < 600 Then
If Sheets("Pins").Cells(.row, .Column).Value = "" Then
Sheets("Parts- input").Cells(.row, 8).Comment.Delete
Else
If Sheets("Parts- input").Cells(.row, 8).Comment Is Nothing Then
Sheets("Parts- input").Cells(.row, 8).AddComment "Lifts Sheet: " & Sheets("Pins").Cells(.row, .Column).Value
Else
Sheets("Parts- input").Cells(.row, 8).Comment.Text "Lifts Sheet: " & Sheets("Pins").Cells(.row, .Column).Value
End If
End If
Else
If Not Intersect(Target, Target.Parent.Range("H1:H599")) Is Nothing Then
Dim runner As Range, rng As Range
For Each runner In Intersect(Target, Target.Parent.Range("H1:H599")).Cells
If Sheets("Pins").Cells(runner.row, 8).Value = "" Then
If rng Is Nothing Then
Set rng = Sheets("Parts- input").Cells(runner.Rows, 8)
Else
Set rng = Union(rng, Sheets("Parts- input").Cells(runner.Rows, 8))
End If
End If
End If
Next
rng.Comment.Delete
End If
End With
End Sub
Private子工作表\u更改(ByVal目标作为范围)
有目标
如果.Count=1,.Column=8,.row<600,则
如果表格(“引脚”).Cells(.row,.Column).Value=”“则
表格(“零件-输入”)。单元格(.row,8)。注释。删除
其他的
如果工作表(“部件-输入”).Cells(.row,8).Comment为空,则
表格(“零件-输入”).Cells(.row,8).AddComment“提升表格:”&表格(“Pins”).Cells(.row,Column).Value
其他的
表格(“零件-输入”).Cells(.row,8).Comment.Text“提升表格:”&表格(“Pins”).Cells(.row,Column).Value
如果结束
如果结束
其他的
如果不相交(Target、Target.Parent.Range(“H1:H599”))则为空
变暗跑步者作为射程,rng作为射程
对于Intersect(Target、Target.Parent.Range(“H1:H599”))单元格中的每个流道
如果表(“引脚”).单元格(runner.row,8).Value=“”,则
如果rng不算什么,那么
设置rng=图纸(“零件-输入”)。单元格(runner.Rows,8)
其他的
设置rng=联合(rng,图纸(“零件-输入”)。单元格(runner.Rows,8))
如果结束
如果结束
如果结束
下一个
rng.Comment.Delete
如果结束
以
端接头
您可以直接删除它们,但如果有很多单元格,一步完成会更快:)
编辑包括
相交
以提高速度此工作表的更改属于什么工作表?当前零件-输入和引脚之间的行对行关系似乎是一对一的。只有当零件的数量是静态的,并且除了引脚之外没有其他零件时,这才有意义。是否应该查找零件号以找到匹配的记录?