Làm sao chuyển text dạng ngày thành ngày trong vba? (1 người xem)

Liên hệ QC

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

othanhquango

Thành viên hoạt động
Tham gia
6/3/09
Bài viết
138
Được thích
7
Mình có một vấn đề muốn nhờ các bạn chỉ giúp.

Mình có 1 form, trong đó có 1 textbox để nhập ngày. Nhưng khi mình dùng lệnh để gán value của textbox đó vô một ô nào đó trong sheet. Thì nó sẽ gán giá trị dạng text chứ không phải dạng ngày.

Các bạn có thể xem trong file đính kèm.
Rất mong sự giúp đỡ của các bạn, mình chân thành cảm ơn.
 

File đính kèm

Mình có một vấn đề muốn nhờ các bạn chỉ giúp.

Mình có 1 form, trong đó có 1 textbox để nhập ngày. Nhưng khi mình dùng lệnh để gán value của textbox đó vô một ô nào đó trong sheet. Thì nó sẽ gán giá trị dạng text chứ không phải dạng ngày.

Các bạn có thể xem trong file đính kèm.
Rất mong sự giúp đỡ của các bạn, mình chân thành cảm ơn.
Vậy khai thêm 1 biến nữa và dùng thêm hàm DateSerial
Private Sub cmd_ok_Click()
Dim iStr As String
Sheets(1).Select
iStr = Me.txt_ngay
Range("a1").Value2 = DateSerial(Year(iStr), Month(iStr), Day(iStr))
End Sub
 
Upvote 0
Nâng cao thêm 1 xíu, có thể làm giúp mình như thế này không bạn (để hạn chế lỗi ấy mà):
- Chỉ cho nhập số vào ô đó.
- Có thể không cần nhập dấu "/" hay nhập cũng được. VD: ngày 09/03/2010, thì có thể nhập như thế này: 09032010 hoặc 9/3/2010 hoặc 09/03/2010.
 
Upvote 0
Nâng cao thêm 1 xíu, có thể làm giúp mình như thế này không bạn (để hạn chế lỗi ấy mà):
- Chỉ cho nhập số vào ô đó.
- Có thể không cần nhập dấu "/" hay nhập cũng được. VD: ngày 09/03/2010, thì có thể nhập như thế này: 09032010 hoặc 9/3/2010 hoặc 09/03/2010.
Tôi thấy vầy:
- Tốt nhất nên quên đi suy nghĩ dùng TextBox để nhập ngày tháng, vì Excel có những công cụ khác phù hợp hơn
- Muốn chọn ngày tháng, tốt nhất nên dùng Calendar hoặc DTPicker ---> Cứ thế mà chọn, không cần suy nghĩ vụ Fomat
Ví dụ code cho DTPicker thế này:
PHP:
Private Sub DTPicker1_Change()
  With Sheet1.Range("A1")
    .NumberFormat = "dd/mm/yyyy"
    .Value = CLng(Me.DTPicker1.Value)
  End With
End Sub
Làm như tôi vừa nói sẽ chính xác và nhập liệu cũng nhanh hơn nhiều lần so với.. gõ gõ
 

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Hic, hạn chế của nó đây:
Could not load an object because it is not available on this machine.
Mở không được bạn à.
Muốn làm việc với VBA phải chịu khó nghiên cứu mấy vụ này bạn ơi ---> Chẳng lẽ gặp lỗi là.. chịu chết sao?
Lỗi xuất hiện là do trên máy bạn thiếu control DTPicker, cụ thể là chưa đăng ký file mscomct2.ocx. Vậy bạn làm như sau:
- Tại file đính kèm dưới đây về máy bạn
- Giải nén vào thư mục C:\Windows\System32
- Bấm Start\Run và gõ vào dòng lệnh regsvr32 mscomct2.ocx
- Nếu thấy xuất hiện thông báo như hình dưới đây thì xem như đăng ký thành công

untitled.JPG

- Mở file Excel và thử lại form lần nữa
 

File đính kèm

Upvote 0
Tôi thấy vầy:
- Tốt nhất nên quên đi suy nghĩ dùng TextBox để nhập ngày tháng, vì Excel có những công cụ khác phù hợp hơn
- Muốn chọn ngày tháng, tốt nhất nên dùng Calendar hoặc DTPicker ---> Cứ thế mà chọn, không cần suy nghĩ vụ Fomat
Ví dụ code cho DTPicker thế này:
PHP:
Private Sub DTPicker1_Change()
  With Sheet1.Range("A1")
    .NumberFormat = "dd/mm/yyyy"
    .Value = CLng(Me.DTPicker1.Value)
  End With
End Sub
Làm như tôi vừa nói sẽ chính xác và nhập liệu cũng nhanh hơn nhiều lần so với.. gõ gõ

Anh ơi, anh cho ví dụ ngày tháng nó chạy xuống dưới dần đi (không có định ở ô nào cả)
Hoặc với code trên thì sửa như thế nào ạ

Chân thành cảm ơn!!!
 
Upvote 0
Anh ơi, anh cho ví dụ ngày tháng nó chạy xuống dưới dần đi (không có định ở ô nào cả)
Hoặc với code trên thì sửa như thế nào ạ

Chân thành cảm ơn!!!

Bạn ơi... từ đó đến giờ bạn dùng biết bao nhiêu là code, chuyện nhỏ này làm khó được bạn sao?
Dùng End(xlUp) hay gì gì đó tương tự là được rồi (Range("A60000").End(xlUp).Offset(1) chẳng hạn)
 
Upvote 0
Web KT

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

Back
Top Bottom