Tôi chẳng biết gì về VBA nhưng thấy có code này giống yêu cầu của bạn nè, với định dạng nhập liệu là dd/mm/yy.Mình đang tạo form nhập liệu , muốn ô nhập liệu luôn thể hiện sẵn ../../.. , để người dùng nhập ngày tháng mà không cần phải gõ dấu / thì làm cách nào nhĩ ?? Ai biết chỉ dùm mình với !
Public Function ED(Ngay)
Dim i As Integer
Dim Ngay1 As String
Ngay = Ngay & "__________"
For i = 1 To Len(Ngay)
Select Case Mid$(Ngay, i, 1)
Case "_", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
Ngay1 = Ngay1 & Mid(Ngay, i, 1)
End Select
If Len(Ngay1) = 8 Then Exit For
Next
ED = Mid$(Ngay1, 1, 2) & "/" & Mid$(Ngay1, 3, 2) & "/" & Mid$(Ngay1, 5, 2)
End Function
Private Sub XNgay_Change()
Dim i1 As Byte
Me.XNgay.Value = ED(Me.XNgay.Value)
i1 = InStr(1, Me.XNgay.Value, "_")
If i1 = 0 Then i1 = 10
Me.XNgay.SelStart = i1 - 1
End Sub
Có một số file của các anh em trong GPE.viendo đã viết:Mấy cái này trong 1 file nào đó trên diễn đàn mà không nhớ tác giả luôn vì tôi lấy code xài cho file của tôi và giờ quên file gốc.
Bạn thử xem đúng không rồi nhờ các sư phụ chỉ tiếp nhé
Muốn ô nhập liệu luôn thể hiện sẵn ../../.. thì không biết cách làm. Nhưng để nhập ngày tháng trong form, các bạn có thể làm như sau:Mình đang tạo form nhập liệu , muốn ô nhập liệu luôn thể hiện sẵn ../../.. , để người dùng nhập ngày tháng mà không cần phải gõ dấu / thì làm cách nào nhĩ ?? Ai biết chỉ dùm mình với !
Private Sub TextDay_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0
End If
End Sub
Private Sub TextDay_Change()
If Len(TextDay) = 2 Then
If Val(TextDay) > 31 Then
TextDay = Left(TextDay, 1)
End If
End If
End Sub
Private Sub TextMonth_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub TextMonth_Change()
If Len(TextMonth) = 2 Then
If Val(TextMonth) > 12 Then
TextMonth = Left(TextMonth, 1)
End If
End If
End Sub
Private Sub TextYear_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub TextYear_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ngay = Val(TextDay)
thang = Val(TextMonth)
nam = Val(TextYear)
myDay = DateSerial(nam, thang, ngay)
If Month(myDay) <> thang Or Day(myDay) <> ngay Then
MsgBox "Nhap ngay " & ngay & "/" & thang & "/" & nam & " khong co thuc !"
Else
MsgBox "Nhap ngay dung. Ghi vao danh sach"
TextDay.Value = ""
TextMonth.Value = ""
TextYear.Value = ""
'Cac cau lenh ghi ngay thang vao danh sach
'.....
'.....
End If
TextDay.SetFocus
End Sub
If Month(ngaythang) <> thang Or Day(ngaythang) <> ngay Then
MsgBox "Nhap ngay " & ngay & "/" & thang & "/" & nam & " khong co thuc !"
Else
MsgBox "Nhap ngay dung. Ghi vao danh sach"
TextDay.Value = ""
TextMonth.Value = ""
TextYear.Value = ""
'Cac cau lenh ghi ngay thang vao danh sach
'.....
'.....
End If
Anh Tuấn nhận xét rất đúng. Nếu làm form chỉ nhập ngày thì không thực tế chút nào, vừa phí công viết code mà nhập lại chậm hơn. Nó chỉ có hiệu quả khi form thiết kế để nhập tất cả dữ liệu của một bảng tính như các form của các chương trình quản lý chuyên nghiệp như Fox, Access, ...Tôi thấy nhập ngày tháng năm bằng Form này có gì đâu mà nhanh ta? Ko chừng còn chậm hơn tôi tự nhập thẳng vào bảng tính ???
???
ANH TUẤN
Mình đang tạo form nhập liệu , muốn ô nhập liệu luôn thể hiện sẵn ../../.. , để người dùng nhập ngày tháng mà không cần phải gõ dấu / thì làm cách nào nhĩ ?? Ai biết chỉ dùm mình với !
Trên Excel không có chức năng này bạn ạ, chắc bạn lầm trên Access ???Bạn kích chuột phải lên ô textbox muốn nhập liệu kiểu ngày tháng năm chọn property tiếp chọn Input mask rồi nhập 00/00/00;0;_ thế là xong.