输入数字后,Excel单元格值更改为TRUE

时间:2019-02-01 19:36:35

标签: excel vba userform

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

关于可能导致此问题的任何建议或解决此问题的方法?我尝试创建新的工作表,从没有此问题的区域进行复制等。但是我一直遇到此问题。

下面是适用于受影响的区域的代码的一个片段:

'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

谢谢。

2 个答案:

答案 0 :(得分:1)

是否有任何影响单元格的格式设置为“自定义”? (TRUE / FALSE)也许,任何宏引用的单元格都会改变这些单元格?

基于上述假设,尝试重新创建问题的可能版本,我向A1单元格输入了7,采用“自定义”格式为“是/否”:显示“ True”

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

宏也可能会导致从另一个杂散细胞这个格式化继承,格式化为定制,在其步骤中引用。

鉴于您是从未受影响的区域复制的(假设您用复制的材料覆盖了格式设置),那么我将研究宏引用的工作表区域。如果宏本身在宏内,我希望发生故障的宏会创建更多具有此问题的单元。

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

答案 1 :(得分:0)

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