Vba 工作表_更改:删除整列值,在此操作之前标识非空单元格

Vba 工作表_更改:删除整列值,在此操作之前标识非空单元格,vba,excel,comments,worksheet,Vba,Excel,Comments,Worksheet,我有一个工作簿,其中有一个主工作表用于输入,主工作表中的值根据主工作表中“type”列的单元格值复制到两个子工作表中 子工作表中针对这些复制单元格的“注释”列中的任何值都将作为注释添加到主工作表的相应行中。当子工作表中的“注释”列中的值立即删除时,我希望在此操作之前识别非空单元格,并删除主工作表中的相应注释 目前,我已经编写了代码,如果在子工作表的“注释”列中添加/删除一个值,该值将在主工作表的相应条目中添加/删除注释 Private Sub Worksheet_Change(ByVal

我有一个工作簿,其中有一个主工作表用于输入,主工作表中的值根据主工作表中“type”列的单元格值复制到两个子工作表中

子工作表中针对这些复制单元格的“注释”列中的任何值都将作为注释添加到主工作表的相应行中。当子工作表中的“注释”列中的值立即删除时,我希望在此操作之前识别非空单元格,并删除主工作表中的相应注释

目前,我已经编写了代码,如果在子工作表的“注释”列中添加/删除一个值,该值将在主工作表的相应条目中添加/删除注释

    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
如果结束
以
端接头
您可以直接删除它们,但如果有很多单元格,一步完成会更快:)


编辑包括
相交
以提高速度

此工作表的更改属于什么工作表?当前零件-输入和引脚之间的行对行关系似乎是一对一的。只有当零件的数量是静态的,并且除了引脚之外没有其他零件时,这才有意义。是否应该查找零件号以找到匹配的记录?