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

禁用Excel中的非标准本地格式,excel,vba,excel-2016,Excel,Vba,Excel 2016,我只是花了一天的时间来弄明白为什么一个公式不能像预期的那样起作用。我试图创建一个表,从外部源提取数据 采集数据X=期间(文本),Y=代码(num),Z=金额(cur) 第一行=Y,第一列=Y,数据=Z 数据按时段和代码收集。如果在该范围内未找到代码,则该代码将添加到第一行的下一个可用单元格中 我想将代码显示为3位格式,因此我格式化了包含代码的范围(VBA)。Numformat=“000” 我想将代码显示为3位数的固定代码,因此我应用了VBA指令将范围格式化为。NumberFormat=“000”

我只是花了一天的时间来弄明白为什么一个公式不能像预期的那样起作用。我试图创建一个表,从外部源提取数据

采集数据X=期间(文本),Y=代码(num),Z=金额(cur) 第一行=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将显示使用了“特殊格式”

我读到在格式化单元格中查找值有问题,并认为这也是我今天的烦恼所在。我强烈建议禁用特殊位置格式。我使用这些的几率是0.0001%。有人有主意吗


艺术。

没有很好的文档记录,但我观察到,关于
LookIn
参数,
xlValues
检查显示的内容,而
xlformals
检查公式栏的内容

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

我不知道为什么输入
000
格式会导致“格式单元格”对话框选择特殊格式。我想这是台湾的一种特殊形式。Excel中似乎发生了一些变化,可能是一个bug,如果您输入了与其他语言环境中的特殊格式相对应的数字,则“格式单元格”对话框将切换到该格式


我希望他们能把它修好。在此之前,如果是问题,您可以使用特定于区域的格式。例如,在美国,您可以使用
[$-en US]000
而不是普通的
000

这没有很好的文档记录,但我观察到,关于
LookIn
参数,
xlValues
检查显示的内容,而
xlFormulas
检查公式栏的内容

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

我不知道为什么输入
000
格式会导致“格式单元格”对话框选择特殊格式。我想这是台湾的一种特殊形式。Excel中似乎发生了一些变化,可能是一个bug,如果您输入了与其他语言环境中的特殊格式相对应的数字,则“格式单元格”对话框将切换到该格式


我希望他们能把它修好。在此之前,如果是问题,您可以使用特定于区域的格式。例如,在美国,您可以使用
[$-en US]000
而不是普通的
000

使用
Lookin:=xlFormulas
使用
Lookin:=xlFormulas
谢谢!这确实奏效了。我也不知道为什么会这样。000在台湾显然是一个固定的地点。如果设置例如0000的格式,Excel假定葡萄牙的邮政编码为00000,巴斯克的邮政编码为00000。这很烦人,我相信这是一个用户想要控制的东西。谢谢!这确实奏效了。我也不知道为什么会这样。000在台湾显然是一个固定的地点。如果设置例如0000的格式,Excel假定葡萄牙的邮政编码为00000,巴斯克的邮政编码为00000。这很烦人,我相信这是一个用户想要控制的东西。