Giúp mình về định dạng ngày tháng với!

Liên hệ QC

trungtn1005

Thành viên mới
Tham gia
15/12/06
Bài viết
31
Được thích
9
Các bạn cho mình hỏi trong Excel bây giờ mình có 1 cột ngày tháng đã đánh theo kiểu tháng/ngày/năm rồi và yêu cầu bắt buộc phải làm sao để định dạng lại cột đó theo kiểu ngày/tháng/năm như Việt Nam. Các bạn giúp mình nhé, tối mai thi rồi.Thanks trước!
 
Chọn cột đó, nhấn Ctrl+1
Trong tab Number chọn Custom, trong phần Type bạn đánh định dạng là dd/mm/yyyy rồi nhấn OK.
 
Bạn ơi không phải rồi bạn à.Có thể bạn không hiểu ý mình rùi.Nghĩa là các cột đã gõ sẵn rồi ví dụ: 5/23/98 thì nó là ngày 23 tháng 5 năm 98 giờ làm sao chuyển nó thành 23/5/98 bạn ạ.MÌnh đã làm theo cách của bạn nhưng không được.
 
Cách của anh Sơn thực hiện tốt đấy chứ!
Hoặc là bạn làm thế này
vào format/cells/number/date/
trong mục locale (location)
chọn French (belgium)

Thân!
 
Làm thế nào để đổi tất cả dạng số (mà mọi người đã định trong Excel là kiểu Numeric có dạng ăn theo Regional Settings) trong Excel thành dạng #.###,00 (theo mẫu của nhà nước) mà không được đổi định dạng chuẩn trong Regional Settings của Windows.

Tương tự việc làm trên cho Date format (đổi thành dạng dd/mm/yyyy cho dù ở Regional Settings vẫn đặt là mm/dd/yyyy)

Với điều kiện là đổi 1 cái, về sau tất cả các file Excel mở ra phải ăn theo format ở trên cho dù Regional Settings của Windows vẫn ở dạng chuẩn của nó.

Lý do: Mấy cái biến kiểu date trong VB nó cứ ăn theo hệ thống nên rất khó sử như Format$(dteDate, "dd/mm/yyyy") nhưng khi ở ngoài cứ thay đổi format thì giá trị dteDate có kiểu Date lại thay đổi theo nên cứ phải đổi thành biến String hết. Nhưng khi chuyển thành String thì không sử dụng được các hàm sử lý liên quan đến Date như dteDate + 1 chẳng hạn).

Đây cũng là 1 bài tập dành cho các bạn lập trình trong VB nhé (Thay đổi Regional Settings của Windows thì không ảnh hưởng gì đến DateTime, Numeric trong chương trình VB)
 
Lần chỉnh sửa cuối:
tra loi ve dinh dang ngay thang

Bạn nvson và ruadangyeu chỉ cho bạn như thề là rõ rồi, nhưng bạn phải điều chỉnh lại trong máy của mình thì nó mới cho hiện ra đúng dạng ngày tháng vn được. Vào Start - Settings - control Panel, nhấp đúp vào Regional And Language. Trong thẻ Regional Option chọn Customize, chọn tiếp thẽ Date, gõ vào ô Short date format là dd/MM/yy (nếu năm có 2 chữ số) hay yyyy nếu muốn năm có 4 chữ số. chúc bạn thành công.
 
tthntdm đã viết:
Vào Start - Settings - control Panel, nhấp đúp vào Regional And Language. Trong thẻ Regional Option chọn Customize, chọn tiếp thẽ Date, gõ vào ô Short date format là dd/MM/yy (nếu năm có 2 chữ số) hay yyyy nếu muốn năm có 4 chữ số. chúc bạn thành công.

Làm thế (thay đổi định dạng trong Regional Settings) thì ai mà chẳng làm được. Bạn ko đọc cái dòng tôi in đậm à. Không được đổi Regional Settings trong Control Panel! Nếu bạn làm foxpro rồi thì bạn biết sẽ có mấy dòng lệnh làm cho cả môi trường lập trình của Fox độc lập với môi trường của Windows. Ý tôi là trong Excel có options nào để nó thay đổi được cái format của các định dạng số và ngày tháng 1 cách tự động theo định dạng do mình đặt ra cho tất cả các cột có định dạng số hoặc dạng date chứ ko phải là thay đổi format cho vùng lựa chọn trên 1 file cụ thể nào đó. Còn nếu dùng customized formats thì làm sao mà thuyết phục được tất cả khách hàng đổi tất cả định dạng trong các files excel của họ chỉ để chạy ứng dụng của mình. Hầu như tất cả các khách hàng đều thay đổi hết định dạng trong Regional Setting làm cho các phần mềm khác (thường dựa theo chuẩn định dạng ban đầu của Windows để chạy) đều chạy ko được đúng.

Vì thế tôi mới nói là các bạn làm lập trình hãy thử care đến vấn đề độc lập với môi trường hệ điều hành mà một trong những thứ đó là độc lập định dạng với môi trường của HĐH.

Mà thôi, nói vấn đề này ra mọi người chắc không rõ lắm đâu vì ít ai phải đương đầu với tình huống này vì đại đa số mọi người chỉ làm Excel thôi thì muốn chỉnh Windows thế nào mà chẳng được (mà hầu hết mọi ứng dụng của Microsoft và các ứng dụng khác đều ăn theo Hệ điều hành Windows). Chắc là Excel ko làm được đâu vì trong VB/VBA làm gì có lệnh kiểu như Set Default Date/Time/Numeric format cho cả môi trường.

PS: Hiểu nhầm tthntdm vì bạn post bài mà ko Quote để biết bạn trả lời ai. Sorry nhé :)
 
Lần chỉnh sửa cuối:
Bạn nói mà chẳng hiểu người ta đặt vấn đề gì cả.
Có vậy 2Hai2 mới rút ruột . . . cho mọi người đó mừ!!! Xin cảm ơn Hai2Hai nhiều nha!

Trời ngoài í còn lạnh không; khi nào bưu điện nhận gởi nắng, trong ni gởi cho ít làm quà đầu xuân!

Chúc mọi người như í nhân dịp xuân về!
 
Lần chỉnh sửa cuối:
SA_DQ đã viết:
Có vậy 2Hai2 mới rút ruột . . . cho mọi người đó mừ!!! Xin cảm ơn Hai2Hai nhiều nha!

Trời ngoài í còn lạnh không; khi nào bưu điện nhận gởi nắng, trong ni gởi cho ít làm quà đầu xuân!

Chúc mọi người như í nhân dịp xuân về!

Vâng, có lẽ do 222 này hơi kỳ vọng cao quá (hay nói đúng hơn là hơi ...gàn gàn) nên hay rút ruột (và thỉng thoảng yêu cầu này nọ linh tinh hơi ... ko thực tế cho lắm - vì cứ nghĩ ai cũng ở hoàn cảnh như mình :)). Kể ra cái tính này cũng cần phải sửa thôi chứ ko thì hỏng việc. Mà luyện mãi rồi vẫn chưa thành công. Cảm ơn bác SA_DQ đã nhắc nhở em. Thanks!

Ở các lứa tuổi khác nhau, thậm chí ở cái thời kỳ Internet này thì chỉ chênh nhau khoảng 5 tuổi thôi cũng đã có suy nghĩ khác nhau, cũng đã tạo nên 1 generation gap rồi - chứ đừng nói là chênh nhau tới 20 tuổi hay 30 tuổi. Tương tự như vậy, ở những hoàn cảnh, vùng miền, ngành nghề khác nhau cũng đã tạo ra những suy nghĩ, những tính cách hoàn toàn khác nhau - thế mới có thế giới muôn màu muôn vẻ. Mà màu nào, vẻ nào cũng có cái hay, cái dở của nó cả. Liên thiên 1 tý chẳng biết mọi người có cho phép ko nhưng chắc mục này đưa vào tâm sự quá. :)

PS: Trời ngoài này mấy hôm nay đã không còn lạnh nữa. Nhưng mà hay mưa bất chợt quá bác ạ! :)
 
Lần chỉnh sửa cuối:
trungtn1005 đã viết:
Các bạn cho mình hỏi trong Excel bây giờ mình có 1 cột ngày tháng đã đánh theo kiểu tháng/ngày/năm rồi và yêu cầu bắt buộc phải làm sao để định dạng lại cột đó theo kiểu ngày/tháng/năm như Việt Nam. Các bạn giúp mình nhé, tối mai thi rồi.Thanks trước!
Dear all,
--------
Vấn đề này em cũng đã từng gặp khi phải xử lý số liệu kế toán giúp một người bạn. Vì bạn đó là "người mới bắt đầu" nên đã dùng theo chuẩn định dạng của hệ thống (MM/dd/yyyy) để nhập liệu vào cột 'Ngày chứng từ' và 'Ngày ghi sổ' mà không biết rằng giá trị mà mình đưa vào đã bị đảo ngược trật tự ngày tháng. Ví dụ: muốn có hiển thị ngày 01/03/2006 (Value= 38.777) thì bạn đó nhập 03/01/2006 (Value = 38.720) mà không biết rằng đó là ngày 01 tháng 03 năm 2006, những ngày sau ngày 12 tháng thì chuyển thành Text bằng cách thêm dấu nháy đơn (').
Việc cập nhật dữ liệu như vậy sẽ rất tai hại, ảnh hưởng lớn đến việc tổng hợp số liệu phát sinh của từng tháng. Nhấn mạnh rằng ngay cả khi chúng ta đã chuyển định dạng ngày hệ thống về 'dd/MM/yyyy' thì kết quả cũng không được đúng như ý muốn.
Có lẽ trungtn1005 cũng giống như bạn em, không biết tí gì về lập trình, thậm trí không biết Regional Options nằm ở đâu, thiết lập Short Date Format như thế nào (thì mới đăng bài vào chuyên mục "Excel dành cho người mới bắt đầu"). Và yêu cầu của bạn trungtn1005 chỉ là làm sao chuyển lại con số 38.720 thành 38.777.
Cách mà em đã convert như sau:
NgayCT= If(IsText(NgayCT);Value(NgayCT);Date(Month(NgayCT); Day(NgayCT); Year(NgayCT)))
Diễn giải:
Nếu ngày chứng từ có kiểu dữ liệu là Text thì ngày chứng từ được convert thành Value. Nếu sai thì đảo thứ tự: tháng chuyển thành ngày, ngày chuyển thành tháng.
Trong lập trình VBA, em thấy rằng cũng ít ai giỏi Excel đến mức Set được Short date format vì đối với họ, chỉ cần thiết lập giá trị này thủ công, duy nhất một lần là được rồi. Nếu mà có yêu cầu bắt họ không được can thiệp như vậy thì chắc là cũng phải vắt óc ra thôi:
Dim strDate As String, dtDate As Date
strDate = Date
dtDate = IIf(strDate <> Format(strDate, "dd/mm/yyyy"), DateSerial(Year(strDate), Month(strDate), Day(strDate)), CDate(strDate))
 
Lần chỉnh sửa cuối:
Hi Cường,

Thực ra ban đầu là anh cũng định hỏi thôi vì anh gặp trục trặc là KH của anh họ chuyển hết Regional settings sang dạng khác với ban đầu của Windows làm cho các ứng dụng của anh ... ko hoạt động đúng vì khi làm anh toàn làm ở chế độ chuẩn (thế mới chết chứ). Mình cũng ko bảo được KH là ko được thay đổi format ở Regional Settings được vì đó là quyền của họ trừ phi ... họ để nguyên file Excel của họ (Họ có làm VBA bao giờ đâu, chỉ là format các cột trong file của họ thôi) và chỉ thay đổi định dạng format của cái date/numeric của Excel theo ý của người dùng là... tất cả các file excel khi mở ra sẽ thay đổi theo chứ ko cần phải thay đổi regional settings nữa (ý tưởng y chang như Foxpro - anh nghe nói là fox làm được thế thôi chứ có làm Fox bao giờ đâu).

Nhưng có điều chắc là ko thể làm thế được trong Excel (vì nếu làm được thì đã nhiều người làm rồi). Vì thế chắc là phải thay đổi trong CT của mình thôi. (Chỉ có điều code nhiều quá rồi, thay đổi cũng hơi tốn công vì đâu chỉ sử lý mỗi format ở dòng lệnh mà còn cả trong các controls, reports, database nữa. Mọi cái nó đều ăn theo Windows mới chuối chứ).

Thực ra việc anh đặt câu hỏi ở trên ra chủ yếu là nhắc nhở những ai lăm le muốn làm ứng dụng thôi (nhất là muốn làm ứng dụng cho ... muôn vạn người dùng chứ ko chỉ cho 1 vài KH). Làm dâu trăm họ mới khó chứ còn làm dâu của 1 nhà thì đâu có gì.

Thôi đi ngủ thôi Cường, anh thấy em cũng lọ mọ đêm khuy thế :)
 
Add-in định dạng ngày tháng khi nhập liệu

Xin giới thiệu với các bạn Quick Date Entry (QDE) một add-in định dạng ngày tháng trong Excel. Mục đích chính của nó là giúp đỡ người "làm biếng" nhập ngày tháng nhanh hơn. Thí dụ khi bạn gõ 112 sẽ thành 11 Feb 2007 theo kiểu châu Âu (khi set Date là priority), hoặc sẽ thành 2 Nov 2007 theo kiểu Mỹ (khi set Month là priority). Dĩ nhiên cần phải setting trước khi xử dụng.
Tôi post lên để các cao thủ lập trình nghiên cứu xem có thể dùng nó giải bài toán ngày tháng lộn xộn mà bạn hai2hai đã nêu trên không.
Vui lòng đọc file "Quick Date Entry.chm" trong gói zip đính kèm.
 

File đính kèm

  • QDE dinh dang ngay 2002.zip
    301.9 KB · Đọc: 259
Dear saudiec,
-------------
Em chưa xem qua file đính kèm nhưng em đoán là không khả thi lắm:
Chắc em chẳng thể "làm biếng" được nếu em muốn diễn đạt 112 là ngày mùng 1 tháng 12 chứ không phải là ngày 11 tháng 2. Làm sao để giải quyết những vấn đề này nhỉ?
Để em ngó qua xem sao đã!
 
Đào Việt Cường đã viết:
Dear saudiec,
-------------
Em chưa xem qua file đính kèm nhưng em đoán là không khả thi lắm:
Chắc em chẳng thể "làm biếng" được nếu em muốn diễn đạt 112 là ngày mùng 1 tháng 12 chứ không phải là ngày 11 tháng 2. Làm sao để giải quyết những vấn đề này nhỉ?
Để em ngó qua xem sao đã!
Dear Cường,
Khi xử dụng QDE, mở file Excel nó yêu cầu active worksheet để bật các chức năng nhập ngày tháng của nó, sau đó quét chọn để xác định vùng nhập liệu (QDE sẽ hiểu là ngày tháng sẽ được nhập vào vùng đó). Bảng Date priority là nơi thiết đặt kiểu gõ (có thể là 3, 5, 7 ký tự) và cách thức QDE hiển thị ngày tháng. Bạn xem hướng dẫn dứoi đây (tôi trích từ file chm của QDE)

"Remember, that in the examples given below, a European date format (dd/mm/yy) is assumed for the dates.

DatePriority determines whether the priority in 3, 5 or 7 digit date inputs is for the days or for the month. To illustrate this, consider a QDE input string of '11204', is this a date of 1 Dec 2004, or 11 Feb 2004? If the DatePriority setting is set to True, the 2 digits will be assumed to relate to the month (that is 1 Dec 2004), if set to False, the 2 digits will be assumed for the days (that is 11 Feb 2004)."

Tôi đã thử trên máy của tôi. Có thể nhập ngày tháng theo kiểu "làm biếng" được. Cách nhập ngày tháng theo kiểu "dd/mm/yy" khá phổ biến ở Việt Nam, add-in nầy có thể hữu ích phần nào. Tuy nhiên vấn đề là file Excel của mình khi chạy trên máy tính khác không có QDE thì sao? Tôi chưa kiểm chứng được. QDE có đề cập đến de-activated worksheet khi gởi file qua các máy tính khác, khi de-activated, code của nó sẽ bị remove khỏi file. Bạn thử nghiên cứu vấn đề nầy xem sao.
Chúc bạn vui.
 
Code Help!? - Hỗ trợ nhập dd/mm/yyyy

Trích
Tôi đã thử trên máy của tôi. Có thể nhập ngày tháng theo kiểu "làm biếng" được. Cách nhập ngày tháng theo kiểu "dd/mm/yy" khá phổ biến ở Việt Nam, add-in nầy có thể hữu ích phần nào. Tuy nhiên vấn đề là file Excel của mình khi chạy trên máy tính khác không có QDE thì sao? Tôi chưa kiểm chứng được. QDE có đề cập đến de-activated worksheet khi gởi file qua các máy tính khác, khi de-activated, code của nó sẽ bị remove khỏi file. Bạn thử nghiên cứu vấn đề nầy xem sao.
Chúc bạn vui.[/quote]
SAUDIEC

+-+-+-+|||||
Kính chào các cao thủ GPE !
Mấy hồi nay em đang theo đuôi vụ nhập ''Ngày/Tháng/Năm" đến ... không yên!
em muốn trợ giúp cho anh em ở cơ quan hàng ngày trực ca làm việc khi nhập dd/mm/yyyy vào 2 cột (cách nhau - cột G và I) ở 1 sheet trong 1 File excel do em tạo ra, nhưng họ đã quá quen với kiểu nhập ddmmyy hoặc ddmmyyyy ở phần mềm khác trong hệ thống máy nghiệp vụ (Regional của HĐH buộc phải là M/D/YYYY). Theo thiển nghĩ của em Excel cũng có thể làm được như các phần mềm khác chứ ạ, vì cùng chạy trong 1 môi trường mà!
Em đã thử Quick Date Entry (Chắc do Tây viết) do bác SAUDIEC post nhưng khi nhập nó cứ loạn cả nên! Bác SAUDIEC có thể hướng dẫn hoặc lưu ý cho em khai thác QDE được ko! Trong QDE dinh dang ngay 2002.zip bác post có file "QDE 2002 WS Events" là Code của QDE phải ko ạ! em có chạy nó nhưng báo lỗi! em post lại nhờ các bác cao thủ xem và giúp sửa của Tây thành 1 Code của Ta nhé - Vấn đề ở trên em cũng đã nhờ bác ANHTUAN1066 giúp đỡ Code của bác ấy cũng rất hay và gần ra đc đáp số rồi mong các bác ngó qua nhé http://www.giaiphapexcel.com/forum/showthread.php?t=3338&page=3 ,
(Em có post file "ho_tro_nhap_ngay" trong đó kèm theo y/c) Em muốn 1 Code để khi nhập số liệu sao cho các cell ở 2 cột khi gõ DDMMYY(hoặc DDMMYYYY)-> DD/MM/YYYY định dạng là Date thì tốt còn ko đành Text vậy !?
Vấn đề ''dd/mm/yy" quả thực cũng gian nan! nhưng em thấy trong diễn đàn ta có nhiều cái phi thường lắm ! "d/m/y"chắc nhiều ng gặp phải, còn chỗ em thì thay nhau ngồi gõ DD/MM/YY "hết ngày này sang năm kia" !
Kính mong các bác sớm nghiên cứu, giúp đỡ em!
Thanks - **~**%#^#$ LTMCustoms
 

File đính kèm

  • QDE 2002 WS Events.txt
    7.6 KB · Đọc: 28
Lần chỉnh sửa cuối:
Với bạn Itmcustoms: Tôi thấy cái addIns QDE rất tốt mà, có gì rắc rối, bạn có thể nói rõ hơn dc ko?
ANH TUẤN
 
anhtuan1066 đã viết:
Với bạn Itmcustoms: Tôi thấy cái addIns QDE rất tốt mà, có gì rắc rối, bạn có thể nói rõ hơn dc ko?
ANH TUẤN
Cám ơn bác đã quan tâm !
Em hỏi từng vấn đề 1 nhé ! Hi hi
Liệu có Code nào mà khi chạy chương trình EXCEL thì cho thay đổi Regional settings của Windows sang dạng dd/mm/yyyy và khí thoát ctrình thì lại về trạng thái ngầm định (m/d/yyyy) không ạ! Nếu được bác trợ giúp em nhé !
- Cái này cần thiết vì ở chỗ em mọi người "quá quen" tay với dd/mm/yyyy mà máy vẫn phải chạy chương trình của ngành lại là m/d/yyyy (tất nhiên là máy Client rùi) em muốn chỉ cần nói với họ là "thoát nó ra để chạy cái khác" ! hi hi ....
Thanks!
 
Lần chỉnh sửa cuối:
hai2hai đã viết:
Thực ra việc anh đặt câu hỏi ở trên ra chủ yếu là nhắc nhở những ai lăm le muốn làm ứng dụng thôi (nhất là muốn làm ứng dụng cho ... muôn vạn người dùng chứ ko chỉ cho 1 vài KH). Làm dâu trăm họ mới khó chứ còn làm dâu của 1 nhà thì đâu có gì.
He he, giờ tớ mới đọc cái bài này. Ông bức xúc cũng phải thôi vì ở đây có mấy ai làm ứng dụng đóng gói cho muôn người như ông hay tôi đâu. Tôi cũng vừa dính vụ liên quan tới múi giờ với vài khách hàng ở khu vực Châu Âu kia kìa. Ứng dụng chạy tả lả trên mấy nước và khi mà ở VN, buổi sáng nhân viên post được mấy chứng từ sáng ngày hôm nay thì ở bển họ thấy mãi ko hiện ra (vì ngày máy tính của họ vẫn còn là ngày hôm trước mà). Đó còn chưa kể cái vụ dấu chấm, dấu phẩy trong Regional Setting nữa chứ.

Liệu có Code nào mà khi chạy chương trình EXCEL thì cho thay đổi Regional settings của Windows sang dạng dd/mm/yyyy và khí thoát ctrình thì lại về trạng thái ngầm định (m/d/yyyy) không ạ! Nếu được bác trợ giúp em nhé !
- Cái này cần thiết vì ở chỗ em mọi người "quá quen" tay với dd/mm/yyyy mà máy vẫn phải chạy chương trình của ngành lại là m/d/yyyy (tất nhiên là máy Client rùi) em muốn chỉ cần nói với họ là "thoát nó ra để chạy cái khác"!
-------------------------------------------------------
'// API Declaration

Private Declare Function GetSystemDefaultLCID Lib "KERNEL32" () As Long
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string
Private 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
Private Declare Function SetLocaleInfo Lib "KERNEL32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long


Mã:
Public Function ChangeRegionalDateFormat(ByVal strNewFormat As String, Optional ByRef strOldFormat As String) As Boolean
On Error GoTo ChangeRegionalDateFormat_Error

Dim sReturn As String
Dim sOldFormat As String
Dim ret As Long
Dim LCID As Long
    
    '// Assume function fails
    ChangeRegionalDateFormat = False
    
    strOldFormat = vbNullString
    
    LCID = GetSystemDefaultLCID()
    
    ret = GetLocaleInfo(LCID, LOCALE_SSHORTDATE, sReturn, Len(sReturn))
    
    If ret Then
        'pad the buffer with spaces to create the size of memory buffer
        sReturn = Space$(ret)
        'and call again passing the buffer
        ret = GetLocaleInfo(LCID, LOCALE_SSHORTDATE, sReturn, Len(sReturn))
        'if successful (r > 0)
        If ret Then
            'Ret holds the size of the string
            'including the terminating null
            sOldFormat = left$(sReturn, ret - 1)
            '//If LCase$(sOldFormat) <> LCase$(strNewFormat) Then
            If sOldFormat <> strNewFormat Then
              If Not IsMissing(strOldFormat) Then strOldFormat = sOldFormat '// Return old format
              Call SetLocaleInfo(LCID, LOCALE_SSHORTDATE, strNewFormat)
            End If
        End If
    End If
    
    '// All's well - return True
    ChangeRegionalDateFormat = True

ChangeRegionalDateFormat_Done:
   On Error GoTo 0
   Exit Function

ChangeRegionalDateFormat_Error:
  '// Call Process_Error(MODULE_NAME, "ChangeRegionalDateFormat")
  Resume ChangeRegionalDateFormat_Done
End Function
How to use:

Mã:
Public Const fmtDATE_RegionalShortDateFormat = "MM/dd/yyyy" '// Chú ý chữ MM viết hoa nhé.
Public pstrOldRegionalDateFormat AS String

'// 1. When the program start:

  '// Change Regional Setting
  If Not ChangeRegionalDateFormat(fmtDATE_RegionalShortDateFormat, pstrOldRegionalDateFormat) Then
    '//MsgBox "Kh«ng thÓ thiÕt lËp ®­îc ®Þnh d¹ng ngµy th¸ng trong Regional and Language Options", vbExclamation, MSG_HDR_APP
  End If
....

'// 2. When the program shutdown:
 Call ChangeRegionalDateFormat(pstrOldRegionalDateFormat)
Nếu làm ngon hơn thì có thể log lại giá trị pstrOldRegionalDateFormat vào file log (hay file Ini) và khi thoát ra một cách bình thường thì xóa giá trị đó đi.

Nếu lúc start chương trình mà thấy giá trị đó vẫn có trong Log, INI thì tức là chương trình đã shutdown 1 cách bất bình thường (abnomally, kiểu như bị mất điện, hay bị killprocess chẳng hạn). Khi đó, giá trị pstrOldRegionalDateFormat phải là giá trị lấy trong file Log/Ini đó.

Không hiểu nói như vậy các bạn đã thấy rõ chưa nhỉ?
 
Lần chỉnh sửa cuối:
Thực ra đây cũng là 1 ví dụ về việc cung cấp "cần câu" hay cung cấp "cá". Tớ thì có thể thích theo cách "cần câu" này hơn.

Giả sử tớ chưa có cái code ở trên thì tớ thinking theo cách này:

1. Làm thế nào để lấy format cũ trong Regional Settings nhỉ?

2. Lấy được format cũ rồi thì mình lưu nó theo cách nào để khi thoát chương trình ra mình lại update lại nhỉ?

3. Làm thế nào để "Set" format cho Regional Setting nhỉ? (Không chỉ mỗi Date)

4. Tiếng anh của cái việc đó có thể là gì nhỉ? Chắc là Set, Get, hay Change Regional Setting Format gì đó, hoặc có thể cụ thể hơn là. Mà ta cần code trong VB, VBA. Vậy ta cần tìm như thế nào nhỉ. Google thôi (hoặc sục trong đống Source Lib, API Lib để tìm) tỷ như: Google: "Change regional setting format" + DateFormat + Visual Basic + SourceCode (hoặc đại loại như thế)

Và ngày xưa tớ thực hiện theo cách đó. Đó chính là cái "cần câu" để tớ kiếm những con cá như vậy (và rất chủ động trong việc kiếm cá, chỉ khi nào không thể tự kiếm được cá thì sẽ lên mạng hỏi).

Nhân tiện bài này tớ giới thiệu một cách "giải quyết vấn đề" kiểu "cần câu" như vậy.
 
Quả đúng nếu là chỉ 1 mình mình xài thì ko thành vấn đề... còn làm đễ cho nhiều người khác xài thì thật nhức đầu... Mỗi người 1 ý khác nhau, khó lóng bắt dc họ theo ý mình (giống như câu nói khách hàng là thượng đế mà)...
Tôi ko biết các bạn chuyên về Excel sẽ lập trình như thế nào chứ riêng trong ngành tự động của tôi là luôn luôn chìu theo ý khách hàng chứ ko bao giờ bắt khách hàng làm theo chương trình có sẳn của chúng ta... Có khi họ đòi hỏi nhửng thứ tưởng chừng rất vô lý nhưng khi ta phục vụ dc sự vô lý này thì mới thấy cái ko thể vẩn trở thành có thể như thường
Với smbsolutions: Việc lấy Regional language settings trong Registry và import lại 1 setting khác theo ý mình bằng 1 file .REG hoặc .INF tôi nghĩ ko khó nhưng tôi ko biết nếu làm nó bằng Excel sẽ như thế nào? Mong dc chỉ giáo!
Mến
ANH TUẤN
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom