Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1204|回复: 0

将系统日期自动改为YYYY.MM.DD的代码

[复制链接]
发表于 2012-5-28 20:41 | 显示全部楼层 |阅读模式
Option Compare Database
Option Explicit
Public Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
'设置短日期格式
Public Const LOCALE_SSHORTDATE = &H1F
Public Const LOCALE_SDATE = &H1D
'下面的过程可以帮你达到目的
Sub setshortdate()
    Dim llocal As Long
    Dim sa     As String
    Dim lOk    As Long
    Dim setlocalinfo As Variant
    On Error GoTo ErrShow
    sa = Space(20)
    llocal = GetUserDefaultLCID()
    lOk = GetLocaleInfo(llocal, LOCALE_SSHORTDATE, ByVal sa, 20)
    If Trim(sa) <> "yyyy-MM-dd" Then
        MsgBox "您的系统日期不是(YYYY-MM-DD)格式,点击确定,自动更改格式"
        'If MsgBox("您的系统日期不是(YYYY-MM-DD)格式,强烈建议您将它修改成该格式," & Chr(10) _
         & "否则软件可能会出现运行障碍!" _
         & Chr(10) & Chr(10) & "点击'是'将自动为您修改。", vbQuestion + vbYesNo, "忠告") = vbYes Then
        sa = "yyyy-MM-dd"
        llocal = GetUserDefaultLCID()
        SetLocaleInfo llocal, LOCALE_SSHORTDATE, ByVal sa
        'End If
    End If
    sa = Space(2)
    lOk = GetLocaleInfo(llocal, LOCALE_SDATE, ByVal sa, 2)
    If Trim(sa) <> "-" Then
        sa = "-"
        lOk = SetLocaleInfo(llocal, LOCALE_SDATE, ByVal sa)
    End If
    setlocalinfo = True
    Exit Sub
ErrShow:
    MsgBox "系统日期不能自动设置为(2002-01-01)的格式" & vbCrLf & "请用手工先把系统日期改为如(2002-01-01)的格式,再运行本系统!"
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-15 16:16 , Processed in 1.327525 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表