Em lập form nhập liệu sử dụng Textbox và ComBobox để nhập "số" và "ngày" thì các số và ngày này lại luôn được mặc định là dạng "text". Em muốn hỏi, em phải làm thế nào để số thì được định dạng là "số" giống như mình nhập liệu trực tiếp vào từng ô ạ. Em cảm ơn mọi người
Hàm CDate để đổi kiểu string khá nguy hiểm đối với dân không rành code. Nếu bác cho code thì nên thêm câu nhắc chừng người nhận phải cẩn thận:
Hàm này mặc định tính tháng ngày theo hệ thống máy. Nhưng nếu tháng tính ra lớn hơn 12 thì nó tự động "thử" kiểu khác.
Thường thì khi đổi kiểu sang date, nên chuyển sang dạng yyyy/mm/dd trước.
Hàm CDate để đổi kiểu string khá nguy hiểm đối với dân không rành code. Nếu bác cho code thì nên thêm câu nhắc chừng người nhận phải cẩn thận:
Hàm này mặc định tính tháng ngày theo hệ thống máy. Nhưng nếu tháng tính ra lớn hơn 12 thì nó tự động "thử" kiểu khác.
Thường thì khi đổi kiểu sang date, nên chuyển sang dạng yyyy/mm/dd trước.
Em cảm ơn mọi người đã giúp đỡ. Em muốn các anh trợ giúp thêm ạ, ở trong form của em ô Textbox tương ứng với ngày tháng em đang để giá trị mặc định khi mở Form là ngày "hôm nay". Trong trường hợp em muốn sau khi nhập liệu lần 1, em điền giá trị khác giá trị mặc định thì giá trị đó vẫn được nhớ cho các dòng nhập liệu tiếp theo. Chỉ khi nào em mở lại form từ đầu thì nó mới trở về mặc định là ngày hiện hành ấy ạ
DateSerial là hàm tính ngày tháng. CDate thuộc về dòng hàm C??? căn bản của VBA dùng để chuyển đổi kiểu dữ liệu.
Sử dụng hàm tính hay hàm đổi kiểu là do đường lối code (philosophy) của bạn.
Sub Bangnhaplieu()
UserForm1.Show
End Sub
Private Sub Formnhap_Click()
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 1).Value = Me.TextBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 2).Value = Me.TextBox_2.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 3).Value = Me.ComboBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 4).Value = Me.TextBox_3.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 5).Value = Me.TextBox_4.Value
TextBox_3.Value = Empty
TextBox_4.Value = Empty
Call Fillborders
UserForm_Initialize
End Sub
Trong module UserForm thêm
Mã:
Private Sub UserForm_Initialize()
Dim a1, a2 As Long
a1 = Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row
a2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
ComboBox_1.RowSource = "sheet1!B4:B" & a1
TextBox_1.Value = Sheets("Sheet2").Cells(a2, "A") + 1
If TextBox_2.Value = "" Then TextBox_2 = Date
TextBox_2.SetFocus
End Sub
Sub Bangnhaplieu()
UserForm1.Show
End Sub
Private Sub Formnhap_Click()
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 1).Value = Me.TextBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 2).Value = Me.TextBox_2.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 3).Value = Me.ComboBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 4).Value = Me.TextBox_3.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 5).Value = Me.TextBox_4.Value
TextBox_3.Value = Empty
TextBox_4.Value = Empty
Call Fillborders
UserForm_Initialize
End Sub
Trong module UserForm thêm
Mã:
Private Sub UserForm_Initialize()
Dim a1, a2 As Long
a1 = Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row
a2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
ComboBox_1.RowSource = "sheet1!B4:B" & a1
TextBox_1.Value = Sheets("Sheet2").Cells(a2, "A") + 1
If TextBox_2.Value = "" Then TextBox_2 = Date
TextBox_2.SetFocus
End Sub
[/
[/QUOTE]
Sub Bangnhaplieu()
UserForm1.Show
End Sub
Private Sub Formnhap_Click()
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 1).Value = Me.TextBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 2).Value = Me.TextBox_2.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 3).Value = Me.ComboBox_1.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 4).Value = Me.TextBox_3.Value
Sheets("Sheet2").Cells(Me.TextBox_1 + 1, 5).Value = Me.TextBox_4.Value
TextBox_3.Value = Empty
TextBox_4.Value = Empty
Call Fillborders
UserForm_Initialize
End Sub
Trong module UserForm thêm
Mã:
Private Sub UserForm_Initialize()
Dim a1, a2 As Long
a1 = Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Row
a2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
ComboBox_1.RowSource = "sheet1!B4:B" & a1
TextBox_1.Value = Sheets("Sheet2").Cells(a2, "A") + 1
If TextBox_2.Value = "" Then TextBox_2 = Date
TextBox_2.SetFocus
End Sub
Em mong muốn từ bảng nhập liệu giá trị Sheet1.Cells(Me.TextBox1 + 2, 8).FomularR1C1 được điền vào bảng là công thức hàm có dạng như là H8 = F8*G8. Mong anh chia sẻ giúp em cách để em có thể nhập được công thức ngay từ Form nhập liệu ạ