Excel和区域设置

Excel和区域设置,excel,ms-office,vba,Excel,Ms Office,Vba,有没有办法禁用excel来读取日期单元格的区域设置? 单元格中当前显示的格式对于显示和编辑是不同的,如下所示: 将过滤器放入模块中: 为此,我们需要将用户的初始设置存储在公共变量中。这需要放在模块中,而不是对象中 然后将其放入ThisWorkbook对象中。当用户打开工作簿时,它会将用户设置设置为公共变量。在这种情况下,当用户停用工作簿(即更改到另一个工作簿或另一个程序)时,它会将用户设置重置为默认设置,然后在用户激活工作簿时将其更改为自定义设置。执行此操作时,它将控制应用程序设置,但必须是特定

有没有办法禁用excel来读取日期单元格的区域设置? 单元格中当前显示的格式对于显示和编辑是不同的,如下所示:


将过滤器放入模块中: 为此,我们需要将用户的初始设置存储在公共变量中。这需要放在模块中,而不是对象中

然后将其放入ThisWorkbook对象中。当用户打开工作簿时,它会将用户设置设置为公共变量。在这种情况下,当用户停用工作簿(即更改到另一个工作簿或另一个程序)时,它会将用户设置重置为默认设置,然后在用户激活工作簿时将其更改为自定义设置。执行此操作时,它将控制应用程序设置,但必须是特定于工作簿的

Option Explicit
Private Sub Workbook_Open()
    InternationalDateSetting = Application.International(xlMDY)
End Sub
Private Sub Workbook_Activate()
    '' Please look at https://msdn.microsoft.com/en-us/library/office/ff840213.aspx for all settings
    '' Set to true for month-day-year order, false for day-month-year
    Application.International(xlMDY) = True
    '' Or uncomment and use:
    '' 0 = month-day-year
    '' 1 = day-month-year
    '' 2 = year-month-day
    '' You will also need to change the Workbook_Open and Workbook_Deactivate from 'xlMDY' to 'xlDateOrder'

    ' Application.International(xlDateOrder) = 0
End Sub
Private Sub Workbook_Deactivate()
    Application.International(xlMDY) = InternationalDateSetting
End Sub

您的区域设置设置为mm/dd/yyyy,但随后您将单元格格式设置为dd/mm/yyyy。选择一个,但更改其中一个以使其匹配。是的,但我可以强制excel不读取区域设置吗?您可以更改带有Application.InternationalxlCountrySetting的工作簿的区域设置吗?如果强制excel不读取区域设置,您希望excel如何格式化日期?或者换句话说,Excel需要知道如何格式化日期。如果您阻止它读取您的区域设置,那么有什么替代方案?根本不格式化日期?默认为国际日期格式可能是什么?您必须将Excel的日期格式设置为与区域设置不同的格式。汤姆只是提供了一个。另一种方法可能是:@Tom你能举个例子吗?我该怎么做?我不知道足够的excel,你能提供一些例子excel文件通过链接到托管文件?
Option Explicit
Private Sub Workbook_Open()
    InternationalDateSetting = Application.International(xlMDY)
End Sub
Private Sub Workbook_Activate()
    '' Please look at https://msdn.microsoft.com/en-us/library/office/ff840213.aspx for all settings
    '' Set to true for month-day-year order, false for day-month-year
    Application.International(xlMDY) = True
    '' Or uncomment and use:
    '' 0 = month-day-year
    '' 1 = day-month-year
    '' 2 = year-month-day
    '' You will also need to change the Workbook_Open and Workbook_Deactivate from 'xlMDY' to 'xlDateOrder'

    ' Application.International(xlDateOrder) = 0
End Sub
Private Sub Workbook_Deactivate()
    Application.International(xlMDY) = InternationalDateSetting
End Sub