我试图理解为什么当用户直接在单元格上输入内容时vba代码没有运行。基本上,我已经启用了数据验证功能,并向用户提供可以选择的一组数据。如果用户仅在单元格上输入“状态”,则不会触发该宏。你知道如何解决这个问题吗?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetColumn As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("E:E"), Target)
'Doing
xOffsetColumn = 4
If ActiveCell.Value = "Doing" Then
If Not WorkRng Is Nothing Then
Application.EnableEvents = False
For Each Rng In WorkRng
If Not VBA.IsEmpty(Rng.Value) Then
If Rng.Offset(0, xOffsetColumn).Value = "" Then
Rng.Offset(0, xOffsetColumn).Value = Now
Rng.Offset(0, xOffsetColumn).NumberFormat = "dd-mm-yyyy, hh:mm:ss"
End If
Else
Rng.Offset(0, xOffsetColumn).ClearContents
End If
Next
Application.EnableEvents = True
End If
End If
答案 0 :(得分:1)
答案的两个选项。
选项1:。有人(可能是您)以某种方式禁用了事件。因此,请运行以下小型vba代码以将其启用:
import { html-validator } from "html-validator";
选项2: 您实际上是在输入“正在执行”,并且期望发生某些事情。这不是代码在做什么。这行:
Sub EnableBack
Application.EnableEvents = True
End Sub
实际上检查“目标”下方的单元格。为确保正确的单元格在“正在执行”操作中,请将该行更改为:
If ActiveCell.Value = "Doing" Then
最佳做法是考虑使用If Target.Value = "Doing" Then
,这样您就会发现“正在执行”,“正在执行”,“正在执行”等情况。