Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 列中的值更改时删除关联的单元格_Vba_Excel - Fatal编程技术网

Vba 列中的值更改时删除关联的单元格

Vba 列中的值更改时删除关联的单元格,vba,excel,Vba,Excel,我有一个excel表格,它有三列:员工编号员工姓名可用性我试图做的是当可用性值从一个数字变为零时,员工编号和员工姓名与该行关联的将获得删除线此外,如果添加了可用性编号,删除线将消失我已经在下面写了一些代码,但我不知道我的方向是否正确 Sub change(ByVal Target As Range) Dim ws As Worksheet Dim watchrange As Range dim intersectrange as range Set ws = Worksheets("Workb



我有一个excel表格,它有三列:
员工编号
员工姓名
可用性

我试图做的是当可用性
值从一个数字变为零时,员工编号员工姓名与该行关联的将获得删除线
此外,如果添加了可用性编号,删除线将消失
我已经在下面写了一些代码,但我不知道我的方向是否正确

Sub change(ByVal Target As Range)
Dim ws As Worksheet
Dim watchrange As Range
dim intersectrange as range

Set ws = Worksheets("Workbench Report")

endrow = ws.Cells(ws.Rows.count, "E").End(xlUp).Row

Set watchrange = Range("E2:E" & endrow)
Set intersectrange = Intersect(Target, watchrange)
If intersectrange = "" Then
ws.Range("B" & rng.Row).Resize(1, 2).Font.Strikethrough = True
Else
'do nothing
End If

End Sub
有人能帮我吗

提前感谢您提供以下数据:

此工作表事件宏:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim watchrange As Range, r As Range, rw As Long
    Dim intersectrange As Range, endrow As Long

    endrow = Cells(Rows.Count, "A").End(xlUp).Row
    Set watchrange = Range("C2:C" & endrow)
    Set intersectrange = Intersect(Target, watchrange)
    If intersectrange Is Nothing Then Exit Sub

    For Each r In intersectrange
        rw = r.Row
        If r.Value = "" Then
            Range("A" & rw & ":B" & rw).Font.Strikethrough = True
        Else
            Range("A" & rw & ":B" & rw).Font.Strikethrough = False
        End If
    Next r
End Sub
将满足您的需要。您需要调整列以匹配数据架构

由于它是工作表代码,因此安装和自动使用非常容易:

  • 在Excel窗口底部附近的选项卡名称上单击鼠标右键
  • 选择查看代码-这将打开一个VBE窗口
  • 粘贴内容并关闭VBE窗口
  • 如果您有任何顾虑,请先在试用工作表上试用

    如果保存工作簿,宏将与工作簿一起保存。 如果在2003年以后使用Excel版本,则必须保存 文件的格式为.xlsm而不是.xlsx

    要删除宏,请执行以下操作:

  • 如上所述打开VBE窗口
  • 清除代码
  • 关闭VBE窗口
  • 要了解有关事件宏(工作表代码)的详细信息,请参阅:

    编辑#1:

    此代码由对列C的更改触发,并位于该工作表的工作表代码区域中


    如果按钮代码更改了这些列C值,那么这个事件代码就可以使用了。

    因此,如果我从一个命令按钮运行这个代码,而该按钮上已经有了带有click事件的代码,我可以将这个代码转换成一个公共子代码,并在命令按钮事件中调用它吗?@Briannatates请参阅我的编辑#1我唯一的问题是,保存我代码的excel工作簿正在拉取我希望能够删除的工作表,以便在每次创建新工作表时删除代码added@BriannaCates如果按钮代码正在执行C列更改,然后让它也执行A列和B列格式的更改,忘记使用事件宏。我只是让它成为一个子并在我的命令按钮下调用它,使它工作,但你的代码工作得很好!非常感谢:)