【问题标题】:Excel Cell Value Changing to TRUE when Number Entered输入数字时 Excel 单元格值更改为 TRUE
【发布时间】:2019-02-01 19:36:35
【问题描述】:

我有一张运行着数百个用户窗体和宏的工作表。当我在用户窗体的文本框中或直接在有问题的单元格中输入数字时,它会用一个值填充一个单元格,但是在我单击文本框后,该单元格会自动变为 TRUE。如果我用预期值覆盖 TRUE 值,则单元格将更改为数字,但是引用此单元格的方程式无法识别此值。我只在几个单元格上遇到问题,其余的似乎不受此影响,并且都有相同的引用、宏等引用它们。

对可能导致此问题的原因或解决此问题的方法有任何建议吗?我尝试过创建新工作表、从没有此问题的区域复制等,但我一直遇到此问题。

这是适用于受影响区域的代码的 sn-p:

'Element Deficiency Matrix (1a to 3k)
With Worksheets("Abutment Data")
    For Each row In .Range("A2:J4").Rows
        For Each cell In row.Cells
            Set check = Me.MultiPage1.Pages(0).Controls.Add("Forms.Textbox.1")
            With check
                .ControlSource = "'" & cell.Parent.Name & "'!" & cell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
                .Left = Left
                .Font.Size = 6
                .Top = Top
                .Width = 20
                .Height = 12
                .BackColor = &HF6F6F6
                .BackStyle = fmBackStyleOpaque
                .BorderStyle = fmBorderStyleSingle
                .SpecialEffect = fmSpecialEffectFlat
                Left = Left + 24
            End With
        Next
        Left = 28
        Top = Top + 24
        Width = Width
    Next
End With

谢谢。

【问题讨论】:

  • 我猜你在ControlSource 引用的单元格中有公式和/或在引用和更改同一个单元格的不同单元格中有一个公式,和/或你Worksheet_Change 事件中发生了一些事情,该事件在文本框设置后更改了值。
  • 感谢您的建议!我检查了 Worksheet_Change 并没有发现任何东西。受影响的单元格中没有公式,也没有先例公式。我跟踪了所有从属单元格,也没有发现任何影响它的公式。

标签: excel vba userform


【解决方案1】:

是否有任何影响单元格格式为“自定义”? (TRUE/FALSE) 或者,被宏引用的任何单元格都会改变单元格?

尝试根据我的上述假设重新创建问题的可能版本,我在 A1 单元格中输入 7,自定义格式为 True/False:它显示“True”

使 A2 =A1 它继承了真/假自定义格式。当我尝试在某些公式中引用它们中的任何一个时,它似乎优先考虑单元格的真/假性质,而不是真/假状态背后的数据。例如。将 C1 设置为 =A1+4 显示“True”并将 C1 的格式更改为自定义。作为自定义格式如何仅干扰某些公式的示例:=Code(A1) 将正确显示 55(7 的 unicode 引用)并保持其格式。

宏也可能导致从另一个杂散单元格继承这种格式,格式化为自定义,在他们的步骤中引用。

鉴于您从未受影响的区域复制(假设您用复制的材料覆盖了格式),我会查看宏引用的工作表区域。如果它在宏本身内,我希望一个故障宏会创建更多有问题的单元格。

您也可以尝试选择每一列并将它们设置为预期的格式以覆盖杂散的单元格。对于数据右侧的列,块选择它们并删除它们或将它们的格式设置为一般。这里的概念是获得每列格式的一致性并清理可能的宏参考空间(请记住,我对您的工作区/书的外观没有任何参考)。

【讨论】:

  • 嗨,James,所有单元格的格式都设置为 General。我通过并检查并确定了它。为了排除任何公式是罪魁祸首,我禁用了宏并尝试在单元格中输入数字,它们没有更改为 TRUE。这让我相信这与宏本身有关。但是,相同的宏在其他地方使用了 100 次,并且这些区域不存在问题。不过感谢您的建议!
【解决方案2】:

我最终找到了解决问题的方法。它与一个完全不相关的用户表单有关,该用户表单没有任何对我正在处理的工作表的引用。它有一堆复选框对象,当填充某些单元格时,这些对象必须被触发为 TRUE。删除该用户表单并从头开始重新创建后,问题似乎消失了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 2012-01-23
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多