Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-数字格式似乎不可更改_Vba_Excel - Fatal编程技术网

Excel VBA-数字格式似乎不可更改

Excel VBA-数字格式似乎不可更改,vba,excel,Vba,Excel,我有一个excel表格,它直接来自数据库。其第一列包含日期,但未格式化为日期。例如,它们写为:03/01/2014。 所以我试着比较一些单元格中的值,问题是人们输入的日期是:2014年1月3日。比较值时,不返回任何值。我正在使用range.find()命令。因此,我试图更改表中日期列的格式,但根本没有更改。但是,如果我试图编辑一个单元格,只需按enter键,它将成为一个正常日期。我想知道是否有一种方法可以将表中所有那些死板的日期转换为正常的excel日期,这样比较例程就可以工作了。 谢谢。选择要

我有一个excel表格,它直接来自数据库。其第一列包含日期,但未格式化为日期。例如,它们写为:03/01/2014。 所以我试着比较一些单元格中的值,问题是人们输入的日期是:2014年1月3日。比较值时,不返回任何值。我正在使用range.find()命令。因此,我试图更改表中日期列的格式,但根本没有更改。但是,如果我试图编辑一个单元格,只需按enter键,它将成为一个正常日期。我想知道是否有一种方法可以将表中所有那些死板的日期转换为正常的excel日期,这样比较例程就可以工作了。
谢谢。

选择要转换其日期的单元格并运行此小宏:

Sub DateSetter()
Dim r As Range, d As Date, st As String
For Each r In Selection
    st = r.Text
    If InStr(st, "/") <> 0 Then
        ary = Split(st, "/")
        d = DateSerial(CInt(ary(2)), CInt(ary(1)), CInt(ary(0)))
        r.Clear
        r.Value = d
        r.NumberFormat = "m/d/yyyy"
    End If
Next r
End Sub
Sub-DateSetter()
尺寸r作为范围,d作为日期,st作为字符串
对于选择中的每个r
st=r.文本
如果仪表(st,“/”)为0,则
ary=拆分(st,“/”)
d=日期序列(单位(2)),单位(1)),单位(单位(0)))
r、 清楚的
r、 值=d
r、 NumberFormat=“m/d/yyyy”
如果结束
下一个r
端接头

它应该执行转换,但忽略零、空格和其他垃圾。

您希望结果的格式是什么?我希望表的日期列中的所有值都是日期格式“m/d/yyyy”。此外,我忘了提到,如果使用值函数,它会将文本03/01/2014转换为其等效的数值。因此,我想要的是将value函数应用于列DATE的所有行,并将格式更改为data。是否有方法可以忽略日期值中的0