gpt4 book ai didi

excel - 同时更改多个单元格时的 Private Sub Worksheet_Change(ByVal Target As Range)

转载 作者:行者123 更新时间:2023-12-04 21:50:47 25 4
gpt4 key购买 nike

我有这个简单的 VBA 来记录任务何时开始以及何时完成。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cell As Range

If Target.Column = 3 Then
For Each cell In Target.Cells

If Target.Cells = "IN PROGRESS" And Target.Cells.Offset(0, -2).Value = "" Then
Target.Offset(0, -2) = Format(Now(), "DD-MM-YYYY")

ElseIf Target.Cells = "DONE" And Target.Offset(0, -1).Value = "" Then
Target.Offset(0, -1) = Format(Now(), "DD-MM-YYYY")

End If
Next cell
End If

End Sub

表看起来像:

enter image description here

一个一个地更改单元格时,它可以完美地工作。

但是,如果我尝试在多个单元格中粘贴“DONE”,我会得到“Type 13 Error mismatch”并且 VBA 不会执行。

enter image description here

有谁知道解决这个问题的简单方法?

最佳答案

在遍历 Target.cells 中的所有单元格的地方使用 for each 循环。 .但是你使用 target.cells在循环内检查。

如果您从 target.cells 更改循环中的引用至cell它应该修复您的代码。

另请注意,如果您使用 cell.value,它会对您有所帮助.这样,您只需检查单元格中的值。

For Each cell In Target.Cells

If cell.value = "IN PROGRESS" And cell.Offset(0, -2).Value = "" Then
cell.Offset(0, -2).value = Format(Now(), "DD-MM-YYYY")

ElseIf cell.value = "DONE" And cell.Offset(0, -1).Value = "" Then
cell.Offset(0, -1).Value = Format(Now(), "DD-MM-YYYY")

End If
Next cell

关于excel - 同时更改多个单元格时的 Private Sub Worksheet_Change(ByVal Target As Range),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54478876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com