在Excel中禁用非标准本地格式

时间:2019-02-25 21:00:37

标签: excel vba excel-2016

我只花了一天时间来弄清楚为什么公式无法按预期工作。我试图创建一个从外部来源提取数据的表。

收集数据X =周期(文本),Y =代码(数字),Z =数量(当前) 第一行= Y,第一列= Y,数据= Z 数据是按期间和代码收集的。如果在该范围内找不到代码,则该代码将添加到第一行的下一个可用单元格中。

我想以3位数字的形式显示代码,因此我格式化了包含代码(VBA)的范围。Numformat=“ 000” 我想将代码显示为3位固定代码,因此我应用了VBA指令将范围格式化为.NumberFormat = "000"。 导入新的数据行时,将检查表中是否已存在代码。如果不是,则将代码添加到第一行的下一个可用空白单元格。以下功能用于此目的:

Public Function SearchValCol(lngSearch) As Long

    'Search a a specific value in a column and return the column number if found.

    Dim Rng As Range
    With ws_per_tot.Range("1:1")
        Set Rng = .Find( _
            What:=lngSearch, _
            After:=.Cells(.Cells.Count), _
            LookIn:=xlValues, _
            Lookat:=xlWhole, _
            searchorder:=xlByColumns, _
            SearchDirection:=xlNext, _
            MatchCase:=False, _
            SearchFormat:=False)
    End With

    If Not Rng Is Nothing Then
        SearchValCol = Rng.Column
    End If

End Function

现在,将单元格格式设置为“ 000”时,发生了一些奇怪的事情。当单元格的格式设置为“标准”时,找到了代码,而当单元格的格式设置为“ 000”时,则找不到。此外,如果应用格式“ 000”,Excel将显示使用“特殊格式”

Chinese(Taiwan) format

我读到在格式化单元格中查找值存在问题,并且今天也引起了我的不快。我强烈希望禁用特殊的位置格式。我将使用这些的可能性为0.0001%。有人有主意吗?

Art。

1 个答案:

答案 0 :(得分:2)

它的文档记录不充分,但是据我观察,对于LookIn参数,xlValues检查显示的内容,而xlFormulas检查公式的内容酒吧。

因此,如果更改为LookIn:=xlFormulas,则无论单元格的格式如何,都应该能够执行.Find

我不知道为什么输入000格式会导致“格式单元格”对话框选择台湾特殊格式。我认为这是台湾的一种特殊格式。似乎Excel中的某些内容发生了变化,可能是一个错误,如果您在其他区域设置中输入了与特殊格式相对应的数字,则“格式单元格”对话框将切换到该数字。

我希望他们能解决它。在此之前,如果有问题,您可以使用区域特定的格式。例如,在美国,您可以使用[$-en-US]000代替普通的000