[Help] Tạo form định dạng ngày tháng, kiểu số trực tiếp vào Registry (1 người xem)

Người dùng đang xem chủ đề này

quyenpv

Thu nhặt kiến thức
Tham gia
5/1/13
Bài viết
729
Được thích
101
Giới tính
Nam
Nghề nghiệp
Decode cuộc đời!
Từ bài của sư phụ:
http://www.giaiphapexcel.com/forum/...ỊNH-DẠNG-NUMBER-TRỰC-TIẾP-KHI-GÕ-TRÊN-TEXTBOX
Nhờ các anh chị tạo form định dạng ngày tháng, kiểu số trực tiếp vào Registry
- Có thể định dạng ngày theo các kiểu dd/mm/yyyy hoặc mm/dd/yyyy
- Kiểu số theo kiểu Việt Nam hoặc quốc tế
Sau khi thiết lệp lưu vào Registry với ạ

Em có sưu tầm được một kiểu sửa nhưng bằng cách trực tiếp không cho chọn như mong muốn
Mã:
Public Sub Set_ControlPanel()
Const HKEY_CURRENT_USER = &H80000001
Set oSystem = GetObject("winmgmts:\root\default:StdRegProv")
        strKeyPath = "Control Panel\International"
        strValueName = "sDecimal"
        strValue = ","
        oSystem.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue
Set oSystem = GetObject("winmgmts:\root\default:StdRegProv")
        strKeyPath = "Control Panel\International"
        strValueName = "sList"
        strValue = ";"
        oSystem.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue
Set oSystem = GetObject("winmgmts:\root\default:StdRegProv")
        strKeyPath = "Control Panel\International"
        strValueName = "sThousand"
        strValue = "."
        oSystem.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue
Set oSystem = GetObject("winmgmts:\root\default:StdRegProv")
        strKeyPath = "Control Panel\International"
        strValueName = "sShortDate"
        strValue = "dd/MM/yyyy"
        oSystem.SetStringValue HKEY_CURRENT_USER, strKeyPath, strValueName, strValue
MsgBox "Da thiet lap xong"
End Sub

Thanks các anh chị
 
Lần chỉnh sửa cuối:
Em có thiết kế Form mẫu mà không code được, các anh giúp đỡ theo ý tưởng này với ạ.
Các anh cho em hỏi với làm sao em không gõ được tiếng Việt trên Form vậy
 

File đính kèm

Upvote 0
Các anh chị giúp em với ạ
 
Upvote 0
Em có thiết kế Form mẫu mà không code được, các anh giúp đỡ theo ý tưởng này với ạ.
Các anh cho em hỏi với làm sao em không gõ được tiếng Việt trên Form vậy

Bài này có cách làm, cũng tương đối đơn giản. Nhưng giờ chưa có thời gian. Lúc nào rảnh mình viết cho. Chắc phải dùng hàm API gì đó.
 
Upvote 0
Em có thiết kế Form mẫu mà không code được, các anh giúp đỡ theo ý tưởng này với ạ.
Các anh cho em hỏi với làm sao em không gõ được tiếng Việt trên Form vậy

Tặng bạn và các thành viên GPE code định dạng số và ngày theo cách đơn giản nhất.
Các bạn test và cùng hoàn thiện thêm. Code này mình chỉ mới thử viết, chắc còn phải chỉnh nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
win64 bit lỗi dòng khai báo API đầu tiên nha anh hải
Thử code này coi sao Thương
Vụ này là do bộ Office 2013 của Thương xài 64bit chứ không phải do Win
PHP:
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
#Else
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
#End If
Public Sub ChangeRegionalFormat()
Dim DateFormat As String
Dim DecimalFormat As String, ThousandFormat As String
With UserForm1
   DecimalFormat = IIf(.OptionButton1, ",", ".")
   ThousandFormat = IIf(.OptionButton1, ".", ",")
   DateFormat = IIf(.OptionButton3, "dd-MMM-yyyy", "MMM-dd-yyyy")
End With
SetLocaleInfo 1033, &H1F, DateFormat
SetLocaleInfo 1033, &HE, DecimalFormat
SetLocaleInfo 1033, &HF, ThousandFormat
RestartExcel
End Sub
Sub RestartExcel()
ThisWorkbook.Save
ThisWorkbook.ChangeFileAccess xlReadOnly
Shell "Excel.exe """ & ThisWorkbook.FullName & """"
Application.Quit
End Sub
Sub Auto_Open()
Application.WindowState = XlWindowState.xlMaximized
UserForm1.Show
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Anh ơi các này ngày thì đổi mà kiểu số không đổi anh ạ. ANh kiểm tra lại giúp em với
 
Upvote 0
Thử code này coi sao Thương
Vụ này là do bộ Office 2013 của Thương xài 64bit chứ không phải do Win
PHP:
Option Explicit
#If VBA7 Then
Private Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
#Else
Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Boolean
#End If
Public Sub ChangeRegionalFormat()
Dim DateFormat As String
Dim DecimalFormat As String, ThousandFormat As String
With UserForm1
   DecimalFormat = IIf(.OptionButton1, ",", ".")
   ThousandFormat = IIf(.OptionButton1, ".", ",")
   DateFormat = IIf(.OptionButton3, "dd-MMM-yyyy", "MMM-dd-yyyy")
End With
SetLocaleInfo 1033, &H1F, DateFormat
SetLocaleInfo 1033, &HE, DecimalFormat
SetLocaleInfo 1033, &HF, ThousandFormat
RestartExcel
End Sub
Sub RestartExcel()
ThisWorkbook.Save
ThisWorkbook.ChangeFileAccess xlReadOnly
Shell "Excel.exe """ & ThisWorkbook.FullName & """"
Application.Quit
End Sub
Sub Auto_Open()
Application.WindowState = XlWindowState.xlMaximized
UserForm1.Show
End Sub
Em test bài #5 và bài #11 này điều OK
 
Upvote 0
Có thành viên nào chạy thử file bài số 5 coi có chuyển được định dạng hay không?
 
Upvote 0
Ngày thì chuyển đổi được anh! Nhưng định dạng số không được anh ạ
 
Upvote 0
thử code này coi sao thương
vụ này là do bộ office 2013 của thương xài 64bit chứ không phải do win
PHP:
option explicit
#if vba7 then
private declare ptrsafe function setlocaleinfo lib "kernel32" alias "setlocaleinfoa" (byval locale as long, byval lctype as long, byval lplcdata as string) as boolean
#else
private declare function setlocaleinfo lib "kernel32" alias "setlocaleinfoa" (byval locale as long, byval lctype as long, byval lplcdata as string) as boolean
#end if
public sub changeregionalformat()
dim dateformat as string
dim decimalformat as string, thousandformat as string
with userform1
   decimalformat = iif(.optionbutton1, ",", ".")
   thousandformat = iif(.optionbutton1, ".", ",")
   dateformat = iif(.optionbutton3, "dd-mmm-yyyy", "mmm-dd-yyyy")
end with
setlocaleinfo 1033, &h1f, dateformat
setlocaleinfo 1033, &he, decimalformat
setlocaleinfo 1033, &hf, thousandformat
restartexcel
end sub
sub restartexcel()
thisworkbook.save
thisworkbook.changefileaccess xlreadonly
shell "excel.exe """ & thisworkbook.fullname & """"
application.quit
end sub
sub auto_open()
application.windowstate = xlwindowstate.xlmaximized
userform1.show
end sub

đúng là do bộ office 2013 x64. Code chạy ok rồi
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom