Format Custom ô nhập ngày tháng có dạng ../../.. ??

Liên hệ QC

adboy

Thành viên mới
Tham gia
29/11/06
Bài viết
27
Được thích
1
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 !
 
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 !
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.

Cái này nằm ở module
Mã:
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
Cái này thì cho Textbox trong form
Mã:
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
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é --=0
 
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é --=0
Có một số file của các anh em trong GPE.
Nhiều code em cứ lấy và học biến nó thành của mình.
Và tới giờ này cũng chỉ nhớ là cám ơn GPE thôi, tác giả thì không còn nhớ nữa => Mong các anh em thông cảm ...

AnhNT
 
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 !
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:
Tạo 3 textbox TextDay, TextMonth, TextYear để nhập lần lượt ngày, tháng, năm. Giữa 3 textbox có 2 lable có value là dấu "/". Quan trọng nhất là quy định dữ liệu nhập vào nó như thế nào để 3 textbox đó ráp lại phải là ngày. Bạn quy định cách nhập như sau:
- Chỉ được phép nhập vào là số từ 0 > 9.
- TextDay nhập tối đa 2 chữ số <=31.
- TextMonth nhập tối đa 2 chữ số <=12.
- TextYear nhập tối đa 4 chữ số.
- Sau khi TextYear nhập xong nhấn Enter sự kiện Exit sẽ ráp dữ liệu 3 textbox đó, nếu là ngày hợp lệ thì thực hiện lệnh ghi vào bảng tính, sai quay về TextDay nhập lại.
Mã:
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
Nếu nhập ngày sai, hiện thông báo "Nhap ngay 31/02/2007 khong co thuc !", con trỏ quay về TextDay chờ nhập lại
Mã:
If Month(ngaythang) <> thang Or Day(ngaythang) <> ngay Then
  MsgBox "Nhap ngay " & ngay & "/" & thang & "/" & nam & " khong co thuc !"
Nếu nhập đúng ngày có thực, thông báo "Nhap ngay dung. Ghi vao danh sach", xóa dữ liệu trong TextDay, TextMonth, TextYear
Sau đó thực hiện lệnh ghi vào sheet hay làm gi thì các bạn tự bổ sung các dòng ...
Mã:
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
 

File đính kèm

  • Form Date.xls
    30.5 KB · Đọc: 154
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
 
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
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, ...
Khi viết form để nhập dữ liệu, mục đích của người viết là ngăn không cho người sử dụng nhập trực tiếp trên sheet (sheet bị khóa hoặc ẩn) và kiểm tra dữ liệu nhập vào có hợp lệ không, có đầy đủ chưa. Nếu không thỏa mãn các yêu cầu buộc phải nhập lại. Nếu đúng sẽ làm các động tác tiếp theo như tính trung bình, xếp loại, ... trước khi ghi vào sheet. Nói chung, người nhập chỉ nhập. Nhập sai, tính toán thì các thủ tục trong form giải quyết.
Việc kiểm tra dữ liệu hợp lệ bằng các công cụ thông thường của Excel như Validation nhiều khi không đáp ứng được. Còn Conditional Formatting chỉ mang tính chất cảnh báo, không ngăn được người dùng nhập sai.
Mặc khác, khi viết một ứng dụng nào đó, người viết thường chỉ viết. Nhập dữ liệu có người khác nhập (nhập điểm thi, hồ sơ đăng ký biển số xe, ...). Người nhập chẳng cần trình độ gì cao, chỉ biết nhập chính xác là được (cán bộ ngân hàng tính lãi rất nhanh, gõ vài chữ là ra kết quả nhưng họ có biết gì nhiều về fox, access, hàm excel đâu).
Anh Tuấn phải nhìn nhận một thực tế là: dân làm việc văn phòng hầu hết đều biết sử dụng Excel, nhưng mấy người biết dùng Conditional Formatting, Validation, Format custom munber, ...?
 
He... he... Em hoàn toàn đồng ý với thầy Long về điều này.. nhưng ý em muốn nói là "Liệu cơm gắp mắm"... tùy theo công việc mà chọn ra 1 giãi pháp phù hợp... Vì em thấy có 1 số người dùng Form chỉ với 1 mục đích duy nhất là: "CHO NÓ CÓ VẼ PRO HƠN NGƯỜI KHÁC"... cuối cùng chỉ tổ làm rối thêm.... chả biết pro ở chổ nào... Hic..
 
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 !

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.
 
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.
 
Web KT

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

Back
Top Bottom