我有这个简单的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
表格看起来像:
当一个接一个地更改单元格时,它非常完美。
但是,如果我尝试在多个单元格中粘贴“完成”,则会出现“类型13错误不匹配”并且VBA无法执行。
有人知道解决这个问题的简单方法吗?
答案 0 :(得分:3)
对于每个循环,在Target.cells
中的所有单元格中都使用a。但是,您可以在循环内使用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