直接在单元格中输入数据时Excel VBA无法运行

时间:2019-02-12 12:27:57

标签: excel vba

我试图理解为什么当用户直接在单元格上输入内容时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

1 个答案:

答案 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,这样您就会发现“正在执行”,“正在执行”,“正在执行”等情况。