Câu hỏi V/v xử lý nhập liệu trên UserForm (1 người xem)

  • Thread starter Thread starter vungoc
  • Ngày gửi Ngày gửi
Liên hệ QC

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

vungoc

Find Sexy Womans from your town for night
Tham gia
2/8/06
Bài viết
633
Được thích
2,604
Giới tính
Nam
Nghề nghiệp
Search
1- MÔ TẢ:
Trong files excel mình thiết kế việc nhập liệu trên UserForm để ghi dữ liệu xuống sheet, trong UserForm này có rất nhiều textbox, combobox và câu lệnh để xử lý - trong đó có một Textbox Ngayvaolam (dùng để nhập liệu ngày vào làm của người lao động, gõ theo định dạng DD/MM/YYY);

1.1- Textbox Ngayvaolam được gắn đọan code như sau:
Private Sub Ngayvaolam_AfterUpdate()
Me.Ngayvaolam = SuaNgay(Me.Ngayvaolam)
End Sub

1.2- Còn đây là câu lệnh SuaNgay:
Public Function SuaNgay(NgayBatKy)
If Not IsDate(NgayBatKy) Then
MsgBox "Ngay khong hop le"
SuaNgay = Date
Else
ws = NgayBatKy
WP = InStr(1, ws, "/")
WDD = Left(ws, WP - 1)
ws = Mid(ws, WP + 1)
WP = InStr(1, ws, "/")
If WP = 0 Then
WMM = ws: WYY = Year(Date)
Else
WMM = Left(ws, WP - 1)
WYY = Mid(ws, WP + 1)
End If
SuaNgay = DateSerial(WYY, WMM, WDD)
End If
End Function

2- VẤN ĐỀ:
2.1- Thời gian trước đây khi nhập liệu trên UserForm, mình gõ vào Textbox Ngayvaolam nêu trên theo định dạnh dd/mm/yyyy - ví dụ: gõ ngày 08/06/2007, kết quả dữ liệu ghi xuống bảng tính excel hiển thị 08/06/2007 - đúng như mình gõ.

2.2- Nay (sau một thời gian có phát triển thêm một số chức năng, câu lệnh trên UseForm), cũng trên UserForm nói trên, mình gõ vào Textbox Ngayvaolam nêu trên theo định dạnh dd/mm/yyyy - Khi nhập liệu gõ 08/06/2007, kết quả dữ liệu ghi xuống bảng tính excel hiển thị 06/08/2007 - Vị trí ngày và tháng đổi ngược nhau - không đúng như mình gõ (điều này không mong muốn).

(Ghi chú:
- Trong Regional and language options & trong format excel mình đã định dạng theo dd/mm/yyyy.
- Cũng câu lệnh và textbox nêu trên mình thiết kế một chương trình khác thì kết quả được như 2.1).

Là người chưa có nhiều kiến thức và kinh nghiệm đối với VBA. Mong sớm nhận được sự quan tâm trả lời của các anh chị cách thức xử lý vấn đề 2.2 !

Thanks !
 
Lần chỉnh sửa cuối:
vungoc đã viết:
1.2- Còn đây là câu lệnh SuaNgay:
Public Function SuaNgay(NgayBatKy)
If Not IsDate(NgayBatKy) Then
MsgBox "Ngay khong hop le"
SuaNgay = Date
Else
ws = NgayBatKy
WP = InStr(1, ws, "/")
WDD = Left(ws, WP - 1)
ws = Mid(ws, WP + 1)
WP = InStr(1, ws, "/")
If WP = 0 Then
WMM = ws: WYY = Year(Date)
Else
WMM = Left(ws, WP - 1)
WYY = Mid(ws, WP + 1)
End If
SuaNgay = DateSerial(WYY, WMM, WDD)
End If
End Function

Bác thử lại hàm này nhé :

Mã:
Public Function SuaNgay(NgayBatKy)
   WS = NgayBatKy
    If Not IsDate(WS) Then
        MsgBox "Ngay khong hop le"
        SuaNgay = Date
    Else
        If InStr(1, WS, "/") > 0 Then
        KT = "/"
        ElseIf InStr(1, WS, "-") > 0 Then
        KT = "-"
        End If
               
        WP = InStr(1, WS, KT)
        WDD = Left(WS, WP - 1)
        WS = Mid(WS, WP + 1)
        WP = InStr(1, WS, KT)
        If WP = 0 Then
            WMM = WS
            WYY = Year(Date)
        Else
            WMM = Left(WS, WP - 1)
            WYY = Mid(WS, WP + 1)
        End If
        SuaNgay = DateSerial(WYY, WMM, WDD)
    End If
End Function

Thân!
 
Cảm ơn Mr. Hiếu - Mình đã thay thử câu lệnh sửa ngày của bác những vẫn chưa được.

Như vậy, vấn đề không phải ở 2 đọan mã lệnh nêu trên, mà ở ... chỗ nào đây ! ? Mong tiếp tục nhận được sự quan tâm của các bạn !

Thanks !
 
Lần chỉnh sửa cuối:
vungoc đã viết:
1- MÔ TẢ:

2- VẤN ĐỀ:
2.1- Thời gian trước đây khi nhập liệu trên UserForm, mình gõ vào Textbox Ngayvaolam nêu trên theo định dạnh dd/mm/yyyy - ví dụ: gõ ngày 08/06/2007, kết quả dữ liệu ghi xuống bảng tính excel hiển thị 08/06/2007 - đúng như mình gõ.

2.2- Nay (sau một thời gian có phát triển thêm một số chức năng, câu lệnh trên UseForm), cũng trên UserForm nói trên, mình gõ vào Textbox Ngayvaolam nêu trên theo định dạnh dd/mm/yyyy - Khi nhập liệu gõ 08/06/2007, kết quả dữ liệu ghi xuống bảng tính excel hiển thị 06/08/2007 - Vị trí ngày và tháng đổi ngược nhau - không đúng như mình gõ (điều này không mong muốn).

(Ghi chú:
- Trong Regional and language options & trong format excel mình đã định dạng theo dd/mm/yyyy.
- Cũng câu lệnh và textbox nêu trên mình thiết kế một chương trình khác thì kết quả được như 2.1).

Là người chưa có nhiều kiến thức và kinh nghiệm đối với VBA. Mong sớm nhận được sự quan tâm trả lời của các anh chị cách thức xử lý vấn đề 2.2 !

Thanks !


Đây chính là vấn đề tôi nói từ lần trước :)

Giải pháp: Không bao giờ được dùng hàm, kiểu biến gì liên quan đến date vì hàm đó ảnh hưởng từ Regional Settings. Tất cả phải sử dụng String.

Ví dụ: Giả sử cái textbox control đó bạn phải biến nó về 1 dạng date control. ở đó có 3 properties căn bản sau:
- DateFormat: Cho phép chọn dd/mm/yyyy hoặc mm/dd/yyyy (Chỉ cần 2 dạng này thôi). Khi đó Text property sẽ hiển thị đúng như format đã lựa chọn pwr thuộc tính này.
- Text: Nhận giá trị nhập vào (cái này là mặc định của TextBox control rồi).
- USDate: Trả về giá trị dạng mm/dd/yyyy

Thêm 1 method sau: DateValid()

Thực hiện đảo cái Text value theo định dạng đã đặt ở DateFormat property
Return value:
= 0: Nếu Date is Valid
= 1: Nếu Date is Null
= 2: Nếu Date is Invalid

Khi sử dụng control mới này, ở event validate control thì gọi cái method DateValid(). Khi đó giá trị Text property trên Date control sẽ thay đổi theo đúng format mà người dụng đã chọn ở thuộc tính DateFormat. Muốn lấy giá trị trở về dạng mm/dd/yyyy thì nhận giá trị đó từ thuộc tính USDate. Thuộc tính này luôn trở về dạng mm/dd/yyyy cho dù FormatDate ở bất kỳ dạng nào.

Tất cả các code (hàm, kể cả format(), kiểu biến) liên quan đến việc xử lý date luôn luôn phải dùng String. KHÔNG BAO GIỜ ĐƯỢC SỬ DỤNG hàm, kiểu biến liên quan đến date như DateSerial, Format(strDate, "dd/mm/yyyy"), Dim dteDate AS Date, v.v...

Khi giá trị của bạn trả về ở dạng mm/dd/yyyy rồi, giờ là lúc gán lên 1 ô nào đó trên Grid hay 1 nơi khác. Bạn phải đảm bảo nơi đó cũng là độc lập với định dạng Regional Setting của hệ điều hành. Nếu cái Cell trên Sheet của bạn lại là format dạng date thì nó lại tiếp tục ăn theo Regional Setting mà cứ khí thay đổi định dạng đó thì nó lại hiển thị giá trị theo định dạng không theo ý muốn.

Nếu ko sử dụng String mà cứ sử dụng những hàm chuẩn liên quan đến date thì khi bản cứ đổi Date format trong Regional Setting là giá trị Date của bạn cứ loạn hết cả lên. không biết là mùng 2 tháng 9 hay mùng 9 tháng 2 :)

Tóm lại, để ứng dụng hoàn toàn độc lập với Regional Setting thì bạn phải sure là tất cả các môi trường xử lý liên quan đến date đó ko phụ thuộc vào Regional Setting (text control, biến nhớ, grid, sheet, cell....)

Ngoài lề:

Ở cái hàm gì đó của 2 bạn ở trên có những lỗi tương đối căn bản trong lập trình mà nếu là mình thì ko bao giờ chấp nhận viết code kiểu đó: 1 là khai báo biến không có kiểu, khai báo function nhưng ko có kiểu giá trị trở về, 2 là không có chuẩn đặt tên biến. Mình tuy cũng nhắc nhở khá nhiều nhưng có lẽ các bạn chẳng bao giờ chú ý đến vấn đề đó cả. Ở phần mềm chuyên nghiệp, code chỉ chạy được không phải là chương trình tốt mà còn là code dạng tối ưu và code dạng cực đẹp. Có bạn nói phần mềm thì thế này thế nọ nhưng các bạn có lẽ không biết khi phát triển phần mềm có rất nhiều chuẩn mà những nhà lập trình chuyên nghiệp phải tuân thủ (mà viết phần mềm ko chỉ có code đâu nhé), nếu không thì chỉ là mớ rác với những SP kém chất lượng.
 
Lần chỉnh sửa cuối:
hai2hai đã viết:
Đây chính là vấn đề tôi nói từ lần trước :)


Ngoài lề:

Ở cái hàm gì đó của 2 bạn ở trên có những lỗi tương đối căn bản trong lập trình mà nếu là mình thì ko bao giờ chấp nhận viết code kiểu đó: 1 là khai báo biến không có kiểu, khai báo function nhưng ko có kiểu giá trị trở về, 2 là không có chuẩn đặt tên biến. Mình tuy cũng nhắc nhở khá nhiều nhưng có lẽ các bạn chẳng bao giờ chú ý đến vấn đề đó cả. Ở phần mềm chuyên nghiệp, code chỉ chạy được không phải là chương trình tốt mà còn là code dạng tối ưu và code dạng cực đẹp. Có bạn nói phần mềm thì thế này thế nọ nhưng các bạn có lẽ không biết khi phát triển phần mềm có rất nhiều chuẩn mà những nhà lập trình chuyên nghiệp phải tuân thủ (mà viết phần mềm ko chỉ có code đâu nhé), nếu không thì chỉ là mớ rác với những SP kém chất lượng.

Mình rất cảm ơn ý kiến đóng góp quý báu của bạn, nhưng bạn ơi mình chỉ là người đang tìm đến những công cụ nâng cao của excel (VBA) với mong muốn giải quyết một cách hiệu quả các công việc do chính mình phụ trách. Nhìn chung kiến thức lập trình thì chắc chắn là đang ở level thấp nhấp (hoặc so với các chuyên viên lập trình thì chỉ bằng là con số không), vì vậy rất mong nhận được sự chia sẻ của những người am tường về kiến thức và kinh nghiệm lập trình như bạn - để giải quyết được những vấn đề đã nêu ra.

Trân trọng cảm ơn !


P/S: Ngòai lề:
Mình thấy bạn có vẻ thiên hướng về góc độ nhìn nhận và đánh giá vấn đề của một người làm công tác chuyên ngành lập trình phần mềm. Nhưng dù ở góc độ nào thì “chất lượng của sản phẩm vẫn phải được hiểu là tập hợp những tính chât của sản phẩm đuợc quy định trước và chúng thể hiện mức độ thỏa mãn những nhu cầu của người sử dụng sản phẩm đó”.
Như vậy một phần mềm chất lượng chắc chắn một điều là các tính năng, công dụng của nó phải giải quyết một cách hiệu quả các vấn đề đã đặt ra một cách tốt nhất (theo tôi nghĩ: người dùng phần mềm ít quan tâm code và càng không thể biết thế nào là code đẹp hay code tối ưu).
 
Lần chỉnh sửa cuối:
vungoc đã viết:
Mình rất cảm ơn ý kiến đóng góp quý báu của bạn, nhưng bạn ơi mình chỉ là người đang tìm đến những công cụ nâng cao của excel (VBA) với mong muốn giải quyết một cách hiệu quả các công việc do chính mình phụ trách. Nhìn chung kiến thức lập trình thì chắc chắn là đang ở level thấp nhấp (hoặc so với các chuyên viên lập trình thì chỉ bằng là con số không), vì vậy rất mong nhận được sự chia sẻ của những người am tường về kiến thức và kinh nghiệm lập trình như bạn - để giải quyết được những vấn đề đã nêu ra.

Trân trọng cảm ơn !
Góp ý của mình tuy hơi "nặng lời" (cũng một phần do sau khi đọc bài viết này, sorry nhé) nhưng thực sự trước kia mình nói về vấn đề coding nhiều rồi. (hình như mọi người người cũng copy lên diễn đàn này rồi thì phải. Đó là vấn đề naming convention, về code optimizing).

Còn trường hợp cụ thể của bạn. Mình không viết hàm sửa ngày như thế mà chỉ ra vấn đề nguyên nhân tại sao (sự thay đổi của regional setting) và phương hướng giải quyết (sử dụng string thay vì những gì liên quan đến date) mà thôi. Rất tiếc là mình ko mấy khi tìm lời giải cụ thể cho từng vấn đề.
 
hai2hai đã viết:
Đây chính là vấn đề tôi nói từ lần trước :)

Ngoài lề:

Ở cái hàm gì đó của 2 bạn ở trên có những lỗi tương đối căn bản trong lập trình mà nếu là mình thì ko bao giờ chấp nhận viết code kiểu đó: 1 là khai báo biến không có kiểu, khai báo function nhưng ko có kiểu giá trị trở về, 2 là không có chuẩn đặt tên biến. Mình tuy cũng nhắc nhở khá nhiều nhưng có lẽ các bạn chẳng bao giờ chú ý đến vấn đề đó cả. Ở phần mềm chuyên nghiệp, code chỉ chạy được không phải là chương trình tốt mà còn là code dạng tối ưu và code dạng cực đẹp. Có bạn nói phần mềm thì thế này thế nọ nhưng các bạn có lẽ không biết khi phát triển phần mềm có rất nhiều chuẩn mà những nhà lập trình chuyên nghiệp phải tuân thủ (mà viết phần mềm ko chỉ có code đâu nhé), nếu không thì chỉ là mớ rác với những SP kém chất lượng.

Mr. hai2hai kính mến!

Trước hết tôi cũng đồng ý với bác về những ý kiến "ngoài lề" này. Nhưng xin bác hãy dành cái sự "ngoài lề hơi nặng nề" này cho những nhà lập trình chuyên nghiệp. Còn trên diễn đàn của GPE thì không nên như thế! VÌ nếu không thì trên diễn đàn sẽ không còn nhiều người (như tôi chẳng hạn) dám tham gia nữa đâu.

Tôi tuy không đủ trình độ, không đủ tầm và không có vinh dự tạo ra GPE nhưng tôi hiểu: Mục đích của những người sáng lập GPE đẹp lắm cơ!
GPE là ngôi nhà chung, là thế giới của mọi người (từ "level thấp" như bác vungoc (và kể cả nhiều người) thấy được, đến "level cao" chưa ai "đo" được) cùng tham gia được một cách vui vẻ thân thiện, khiêm tốn để cùng nhau học hỏi, cùng nhau trau dồi, cùng nhau chia sẻ.

hai2hai có "level cao" xin hãy post nhiều kiến thức cơ bản lên cho quần chúng được hưởng chút ơn "mưa móc" đi (như rất nhiều người khác đã làm, như vậy thì mọi người biết ơn lắm lắm).

Tôi thích suy nghĩ rằng:
Excel là chiếc đũa thần.
Các bạn trên diễn đàn là các thầy phù thủy
GPE là thế giới thần tiên

Tôi sợ nhất: Ngày nào đó, tôi không còn dám bước chân vào GPE nữa! Xin cảm ơn.
 
Lần chỉnh sửa cuối:
Các bác tập trung giải quyết vấn đề đi. Trah luận về những khái niệm thì dài dài và dài lắm.

Có lẽ Mr Ngọc cần đưa File của bác lên thì mới hiểu rằng tại sao File của Bác lại như vậy. Chứ theo lý thuyết thì không phải như vậy.

Thân!
 
Đúng là cách đóng góp của mình cũng bằng không. Mình quen thế rồi nên bao lâu ko dám post bài nơi đây :).

Mình đã có 1 đoạn giải thích vấn đề ở phần 1 rồi.

Còn phần ngoài lề, đó là mình nói thêm thôi (các bạn xem lại chữ ngoài lề nhé). Ai thích thì nghe chứ việc gì phải đả lại. Nếu mình ko có ý định đóng góp cho diễn đàn thì chắc chắn mình đã ko post bài nói như thế đâu. Nhưng kể cũng lạ, khi có người góp ý thì các bạn lại nhảy dựng lên. Chả nhẽ viết trên diễn đàn phải nhẹ nhàng, v.v...

Cái câu
mình thì ko bao giờ chấp nhận viết code kiểu đó
thực chất là tiêu chí mà hồi xưa còn đi làm mình nói với các bạn tham gia dự án cùng mình, và đó chỉ là quan điểm của mình về việc viết code thôi. Mình cũng hiểu những người làm excel thì thường ko để ý đến những vấn đề đó. Nhưng ... kỳ lạ thật, suy cho cũng đó là 1 lời khuyên nên viết code cho tốt. Vậy mà cũng phản đối này nọ. Các bạn thực sự nhạy cảm quá đấy. Tôi với bạn học cùng lớp tôi cũng thường tranh cãi nhau kịch liệt về những chuyện quản lý và kinh doanh. Xong, 2 thằng nói với nhau: Mày xả hết stress ra chưa? Tao thì xả hết rồi. Cám ơn mày nhé. Thôi, ra quán cafe Liễu Giai làm ly để chiều còn làm việc tiếp.

Tôi nghĩ những chuyện như vậy quá bình thường trong cuộc sống. Ngay cả hôm ngồi cafe lúc cuộc họp về việc tổ chức sinh nhật tại HN, tôi thấy mọi người ngại đưa ra ý kiến về việc Cafe, về việc Tổ chức như thế nào, ai làm gì, v.v... Tôi lúc đó đứng ra thu thập ý kiến và gạch đầu dòng mọi ý rất nhanh (và nói rất to - khổ nỗi tính nói to nó quen rồi, nói nhỏ ko ai nghe thấy) và chắc lúc đó mọi người không nghĩ là tôi nói to là có ý này ý nọ. Chỉ muốn có 1 cuộc họp có kết quả và đúng định hướng mà Cường đặt ra.

Tóm lại, mọi người quá nhạy cảm với từng cách góp ý. Mỗi người có 1 sở trường khác nhau, tính cách khác nhau, không phải ai cũng nhẹ nhàng đưa ra ý kiến được. Quan trọng là cái kết quả của ý kiến đó có giúp ích được gì. Tôi thì hay đưa ra cách suy nghĩ cho đúng định hướng và từ đó có thể giải quyết được nhiều việc tương tự chứ thường thì ít khi trả lời bài viết cụ thể.

Còn chuyện mọi người ko thích code viết đẹp, v.v... thì ko cần thực hiện theo cơ mà. Có ai bắt phải thế này thế nọ đâu. Còn ai đưa ra nhận xét, phải xem nhận xét đó là cho họ hay cho mọi người chứ. (Tôi thì được gì khi viết mấy câu đó lên đây cho mình?)

Ngay trên wkt, ngày xưa có quickquickslow, có sanfrontier gì đó cũng có cách viết như vậy. Cũng có những người ko thích và phản đối kịch liệt cách viết của họ. Nhưng cũng có khá nhiều độc giả như tôi đây lại rất thích tới phong cách viết đó của họ. Chẳng qua đó là những phong cách viết mà thôi. quan trọng là mọi người nên để ý xem họ viết có giá trị gì, chứ để ý từng câu từng chữ trên thế giới online thì đúng là quá mệt.

Mọi người yên tâm, tôi chắc cũng hạn chế tham gia những bài viết như thế này như thời gian gần đây.

Vui vẻ nhé mấy bác.
 
Lần chỉnh sửa cuối:
vungoc đã viết:
P/S: Ngòai lề:
Mình thấy bạn có vẻ thiên hướng về góc độ nhìn nhận và đánh giá vấn đề của một người làm công tác chuyên ngành lập trình phần mềm. Nhưng dù ở góc độ nào thì “chất lượng của sản phẩm vẫn phải được hiểu là tập hợp những tính chât của sản phẩm đuợc quy định trước và chúng thể hiện mức độ thỏa mãn những nhu cầu của người sử dụng sản phẩm đó”.
Như vậy một phần mềm chất lượng chắc chắn một điều là các tính năng, công dụng của nó phải giải quyết một cách hiệu quả các vấn đề đã đặt ra một cách tốt nhất (theo tôi nghĩ: người dùng phần mềm ít quan tâm code và càng không thể biết thế nào là code đẹp hay code tối ưu).

OK. Nếu bạn coi bạn là người dùng thì bạn có thể tiếp tục viết như cũ. Có ai bắt buộc gì đâu. Bạn có quyền không cần phải viết tốt hơn, ko cần phải để ý tới cái ông hai2hai viết lách gì cơ mà. Coi bài của ông ấy chả có ý nghĩa gì, chỉ là vớ vẩn mà mình ko cần phải làm theo vì cái đó chả ảnh hưởng gì đến cuộc sống của mình.

Nhưng mà xét trên phương diện phát triển phần mềm, nói người dùng ko care gì chất lượng của code thì đúng là coi thường người dùng quá (vì thấy họ không biết chuyện code nên muốn viết sao thì viết). Chính họ đã không bảo vệ người dùng bằng chất lượng SP của mình. Dĩ nhiên, bạn ko phải là người như vậy nên bạn có quyền nói mèo đen, mèo trắng đều được, miễn là bắt được chuột. Chứ với những người khác mà để lộ câu đó, thì KH họ coi là lừa đảo họ.

Kể cũng lạ, nhiều người ko thích hoàn thiện mình trong từng công việc cho dù công việc đó là nhỏ nhất.
 
Các Bác buồn cười thật, ba cái chuyện này cũng làm các bác bận tâm à ??
Việc quan trọng là cho ra được vấn đề, chứ còn ngồi tranh luận với nhau về một mớ khái niệm, định nghĩa, quan điểm . . thì có mà ...chết các quán Cà phê.

Không ai là hoàn hảo cả, không ai giỏi hơn ai ?? Vì xét trên tổng thể thì không có tiêu chí nào cả, còn nếu xét trên một cái gì đó cụ thể thì hôm nay anh hơn tôi nhưng ngày mai tô bằng anh và còn có khi là hơn anh nữa.
Sự học vốn là dòng chảy không ngừng mà.

Xin trích lại câu mình đã từng viết :

Trên diễn đàn mỗi người một trình độ, càng lên cao (về lập trình, về kinh nghiệm đường đời, quản lý . . ) thì cái nhìn tổng quát càng rõ nét và sâu sắc hơn.

Người trình độ thấp đừng bực tức khi người trình độ cao phân tích vần đề theo tầm nhìn của họ. Ngược lại người trình độ cao cũng đừng vội nản lòng và buồn bực vì những đánh giá của những người trình độ chưa bằng mình.

Vì khi đã cháy thì ngọn lửa nào cũng rực sáng cả.

Thân!
 
Mr Okebab đã viết:
Bác thử lại hàm này nhé :

Mã:
Public Function SuaNgay(NgayBatKy)
   WS = NgayBatKy
    If Not IsDate(WS) Then
        MsgBox "Ngay khong hop le"
        SuaNgay = Date
    Else
        If InStr(1, WS, "/") > 0 Then
        KT = "/"
        ElseIf InStr(1, WS, "-") > 0 Then
        KT = "-"
        End If
               
        WP = InStr(1, WS, KT)
        WDD = Left(WS, WP - 1)
        WS = Mid(WS, WP + 1)
        WP = InStr(1, WS, KT)
        If WP = 0 Then
            WMM = WS
            WYY = Year(Date)
        Else
            WMM = Left(WS, WP - 1)
            WYY = Mid(WS, WP + 1)
        End If
        SuaNgay = DateSerial(WYY, WMM, WDD)
    End If
End Function

Thân!

Mình đã tìm ra nguyên nhân, như sau:
- 2 đọan mã trên đều áp dụng tốt
- Vấn đề ở chỗ:
. Trươc đây đọan code của nút ghi dữ liệu từ textbox Ngayvaolam xuống bảng tính excel là ... .Offset(lRowEnter, 27) = Me.Ngayvaolam.text ...
. Nay chỉnh lại đọan code của nút ghi dữ liệu từ textbox Ngayvaolam xuống bảng tính excel là ... .Offset(lRowEnter, 27) = Me.Ngayvaolam ... (bỏ đọan .text)
Kết quả nhập trên form thế nào thì ghi xuống excel như vậy.
 
Lần chỉnh sửa cuối:
Dear Ngoc
Lưu ý : Đối với những dữ liệu kiểu ngày tháng và số thì thuộc tính của nó phải là Value chứ không phải là Text. Xử lý như vậy sẽ bị sai là lẽ đương nhiên thôi.
Thân
 
anhphuong đã viết:
Dear Ngoc
Lưu ý : Đối với những dữ liệu kiểu ngày tháng và số thì thuộc tính của nó phải là Value chứ không phải là Text. Xử lý như vậy sẽ bị sai là lẽ đương nhiên thôi.
Thân

Nhưng khi em đổi nó thành .Value - Nó vẫn bị trường hợp giống như .text (ngày tháng nhập trên form ghi xuống bị đảo ngược nhau)
 
Do mình chả biết gì về form, đối với hàm trên nếu sửa như sau thì thế nào, thấy nó cũng OK.
Public Function SuaNgay(NgayBatKy As String)
WS = DateSerial(Year(NgayBatKy), Month(NgayBatKy), Day(NgayBatKy))
 
Web KT

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

Back
Top Bottom