duchuynh103
Thành viên thường trực
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 25/9/07
- Bài viết
- 209
- Được thích
- 146
Bạn có thể tham khảo code sau:Mình có bài tập VBA lớp "mẫu giáo". Nhờ các anh chị sửa giúp code để hoàn thiện.
Nhân đây cho minh hỏi:
- Tại sao khi minh thay " If so = 0 Then" bằng " If so = "" Then " thì kết quả trả về #Value.
Cảm ơn các bạn.
Function Ngay(So as Date)
If Trim(So) = "" Or So = 0 Then
Ngay = ChrW$(212) & " r" & ChrW$(7893) & "ng!"
Exit Function
ElseIf IsDate(So) Then
mNgay = Day(So)
mThang = Month(So)
mNam = Year(So)
Ngay = "ng" & ChrW(224) & "y " & mNgay & " th" & ChrW(225) & "ng " & mThang & " n" & ChrW(462) & "m " & mNam
Exit Function
Else
Ngay = "Không phải dạng ngày" ''Dò trong bảng ký tự Unicode dùm mình, mình không có bảng đó ở đây!
Exit Function
End If
End Function
Thấy bạn có khai báo [Optional doiso As Byte = 0], nhưng sao không thấy đề cập đến trong Function gì cả?Function NGAY(so As Date, Optional doiso As Byte = 0)
Trong code của bạn:
Thấy bạn có khai báo [Optional doiso As Byte = 0], nhưng sao không thấy đề cập đến trong Function gì cả?
Cảm ơn Ca_dafi.
Trong Function của mình có "doiso". Nhưng để đi vào trọng tâm vấn đề mình muốn hỏi nên mình đã bỏ bớt Optional...
Tuy nhiên khi chạy code của bạn vẫn chưa đáp ứng được yêu cầu. Theo mình nghĩ phải khai báo Format thế nào đó (mình đang bí) để nhận dạng phải ĐÚNG DẠNG "d-m-yy" chứ không nhận dạng khi "so" là 1 number. Nhờ bạn sửa giúp.
Khi nhập vào excel thì máy không phân biệt dạng number hay date (chúng là 1)
Nhập số 1 thì máy tự động coi là ngày 1-1-1900
Nhập số 2 thì máy tự động coi là ngày 2-1-1900
bạn lại muốn máy bảo rằng không phải là dạng date <=> potay.com
Nếu bạn muốn khi nhập những ngày < 1-1-2008 (hoặc 1 ngày nào đó) thì nhận được thông báo "Ngày không hợp lệ" thì có thể được
Có thể kiểm tra format của ô
nếu không phải format DATE -> không phải ngày
Có được không nhỉ?
Như vậy, cho dù ta gõ số 1 thì VBA vẫn hiểu đó là dạng ngày, nên tự động chuyển thành 01/01/1900, hoặc 1/1/1900, hoặc 1-Jan-1900, .... etc.Function Ngay(So as Date)
Vậy là mọi chuyện giải quyết xong!Function Ngay(So as Variant)
Code này ,thay "baonhieu" bằng "so" thì khi đánh 1 sẽ cho kết quả là:Bạn có thể tham khảo code sau:
Trong code của bạn:PHP:Function Ngay(So as Date) If Trim(So) = "" Or So = 0 Then Ngay = ChrW$(212) & " r" & ChrW$(7893) & "ng!" Exit Function ElseIf IsDate(So) Then mNgay = Day(baonhieu) mThang = Month(baonhieu) mNam = Year(baonhieu) Ngay = "ng" & ChrW(224) & "y " & mNgay & " th" & ChrW(225) & "ng " & mThang & " n" & ChrW(462) & "m " & mNam Exit Function Else Ngay = "Không phải dạng ngày" ''Dò trong bảng ký tự Unicode dùm mình, mình không có bảng đó ở đây! Exit Function End If End Function
Thấy bạn có khai báo [Optional doiso As Byte = 0], nhưng sao không thấy đề cập đến trong Function gì cả?
Đúng vậy, em chưa sửa lại code, cảm ơn anh!Code này ,thay "baonhieu" bằng "so"
Cái này em đã nói trong bài tiếp theo rồi anh! Chỉ cần khai báo lại biến thôi. Code hoàn chỉnh sẽ là:thì khi đánh 1 sẽ cho kết quả là:
ngày 31 tháng 12 nǎm 1899
Và không phải dạng ngày thì #value
Function Ngay(So as Variant)
If Trim(So) = "" Or So = 0 Then
Ngay = ChrW$(212) & " r" & ChrW$(7893) & "ng!"
Exit Function
ElseIf IsDate(So) Then
mNgay = Day(So)
mThang = Month(So)
mNam = Year(So)
Ngay = "ng" & ChrW(224) & "y " & mNgay & " th" & ChrW(225) & "ng " & mThang & " n" & ChrW(462) & "m " & mNam
Exit Function
Else
Ngay = "Không phải dạng ngày" ''Dò trong bảng ký tự Unicode dùm mình, mình không có bảng đó ở đây!
Exit Function
End If
End Function
Đúng rồi. Rất cảm ơn Ca_difi. Mọi yêu cầu của mình được giải quyết trọn vẹn.Vấn đề không phải chỗ này, mà vấn đề ở chỗ này:Function Ngay(So as Date)
Hãy khai báo lại như sau:Function Ngay(So as Variant)
Vậy là mọi chuyện giải quyết xong!
Function Ngay(So as Variant)
If Trim(So) = "" Or So = 0 Then
Ngay = ChrW$(212) & " r" & ChrW$(7893) & "ng!"
Exit Function
ElseIf IsDate(So) Then
mNgay = Day(So)
mThang = Month(So)
mNam = Year(So)
Ngay = "ng" & ChrW(224) & "y " & mNgay & " th" & ChrW(225) & "ng " & mThang & " n" & ChrW(462) & "m " & mNam Exit Function
Else
Ngay = "Không phải dạng ngày" ''Dò trong bảng ký tự Unicode dùm mình, mình không có bảng đó ở đây!
Exit Function
End If
End Function
Trong đoạn code trên em ko hiểu đoạn bôi đậm.
Các anh giúp em với???
Ngay = ChrW$(212) & " r" & ChrW$(7893) & "ng!"
.............................
Ngay = "ng" & ChrW(224) & "y " & mNgay & " th" & ChrW(225) & "ng " & mThang & " n" & ChrW(462) & "m " & mNam
......................