克服Excel VBA美国化问题?

问题描述 投票:0回答:2

我编写了一个Excel VB代码,使用户可以选择包含CSV文件的文件夹,宏将所有CSV文件插入到工作簿中,每个工作表都被命名为CSV文件的文件名。但是,工作表中的日期有一个日期美国化问题。一些网站建议Local:= True可以帮助纠正这个问题,但由于我是Excel VBA的新手,我不知道在这个代码中添加的位置。或者这里有人有更好的建议,可以帮助我解决这个问题吗?谢谢

Set wb = ActiveWorkbook
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show Then myDir = .SelectedItems(1) & "\"
End With
If myDir = "" Then Exit Sub
Application.ScreenUpdating = False
fn = Dir(myDir & "*.csv")
Do While fn <> ""
    With Workbooks.Open(myDir & fn)
        .Sheets(1).Copy after:=wb.Sheets(wb.Sheets.Count)
        .Close False
    End With
    fn = Dir
Loop
MsgBox ("All data from your selected source file are completed extracted.")
excel-vba vba excel
2个回答
1
投票

要在工作表上显示不同的日期,可以通过选择一个或多个单元格来更改数字格式,然后按Ctrl + 1更改单元格格式。选择适合您的Date格式,或者根据需要选择Custom输入M/D/YYYYD/M/YYYY等格式。见:Format a date the way you want

要将日期转换为工作表上的格式化文本,可以使用TEXT function。例如(使用单元格A1):

=TEXT(A1, "M/D/YYYY")

要在VBA中将日期用作格式化字符串,可以使用FORMAT function。例如(使用单元格A1):

Format(Range("A1"), "M/D/YYYY")

如果需要以编程方式更改单元格的格式,可以使用NumberFormat property

.NumberFormat = "M/D/YYYY"

如果您的工作表将在多个语言环境中使用,那么NumberFormatLocal property可能会更好:

.NumberFormatLocal

0
投票

您需要设置Range.NumberFormat属性以显示所需的日期。

例如,如果您的日期位于“D”列,那么类似于:

wb.Sheets(i).Range("D:D").NumberFormat = "yyyy-mm-dd"

或者你也可以使用Range.NumberFormatLocal,如果它给出了所需的结果。

© www.soinside.com 2019 - 2024. All rights reserved.