Hỏi về định dạng của dữ liệu khi nhập liệu bằng "Form"

Liên hệ QC

khanhcang2

Thành viên chính thức
Tham gia
5/6/12
Bài viết
89
Được thích
23
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
 

File đính kèm

  • ScreenHunter_06 Nov. 23 22.47.jpg
    ScreenHunter_06 Nov. 23 22.47.jpg
    57.7 KB · Đọc: 22
Cột A và B định dạng General
Mã:
With Sheet1
    Range("A2").Value = TextBox1.Value
    Range("B2").Value = CDate(TextBox2.Value)
End With
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.

1637724246730.png
 
Upvote 0
Thường đối với dữ liệu dạng ngày tôi dùng hàm DateSerial và left, right, mid, dài dòng nhưng chắc.
Đúng, đã thế này thì chắc chắn 200%.
Bài đã được tự động gộp:

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.
yyyy-mm-dd thì chắc chắn rồi. Còn về CDATE thì tôi nghĩ cứ nhập trong TextBox y như khi nhập trên sheet thì không lo gì.
 
Upvote 0
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 ạ
 

File đính kèm

  • CHIPHI2.xls
    496.5 KB · Đọc: 11
  • ScreenHunter_07 Nov. 24 18.55.jpg
    ScreenHunter_07 Nov. 24 18.55.jpg
    87.5 KB · Đọc: 7
Upvote 0
Thường đối với dữ liệu dạng ngày tôi dùng hàm DateSerial và left, right, mid, dài dòng nhưng chắc.
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.
 
Upvote 0
Sửa thành
Mã:
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
 
Upvote 0
date = DateTime.DateValue("your date")
Áp dụng công thức này nhé bạn.
 
Upvote 0
Sửa thành
Mã:
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]

Sửa thành
Mã:
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 có sửa code trong form nhập liệu cũ thành như vầy ạ:

Private Sub CommandButton1_Click()
Sheet1.Cells(Me.TextBox1 + 2, 1).Value = Me.TextBox1.Value
Sheet1.Cells(Me.TextBox1 + 2, 2).Value = CDate(Me.TextBox2.Value)
Sheet1.Cells(Me.TextBox1 + 2, 3).Value = Me.ComboBox3.Value
Sheet1.Cells(Me.TextBox1 + 2, 4).Value = Me.TextBox4.Value
Sheet1.Cells(Me.TextBox1 + 2, 5).Value = Me.TextBox5.Value
Sheet1.Cells(Me.TextBox1 + 2, 6).Value = Me.TextBox6.Value
Sheet1.Cells(Me.TextBox1 + 2, 7).Value = Me.TextBox7.Value
Sheet1.Cells(Me.TextBox1 + 2, 8).FomularR1C1 = "RC[-2]*RC[-1]"
ComboBox3.Value = Empty
TextBox4.Value = Empty
TextBox5.Value = Empty
TextBox6.Value = Empty
TextBox7.Value = Empty
Call Fillborders
UserForm_Initialize
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 ạ
 
Upvote 0
Web KT

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

Back
Top Bottom