Giúp đỡ code nhập liệu bằng form theo điều kiện nhập vào sheet chỉ định trong checkox

Liên hệ QC

phongkiemtinh

Thành viên thường trực
Tham gia
22/7/09
Bài viết
224
Được thích
5
A e GPE giúp đỡ code mình có 1 form nhập liệu, mình tạo 1 các check box theo tên các sheet.
Khi nhập liệu mình chọn check box nào thì dữ liệu được nhập vào sheet tên của check box tương ứng. Có thể chọn đồng thời nhiều check box. cấu trúc gần như giống nhau, không nhập theo o liên tiếp trong dòng mà có khoảng cách cel trong dòng, vi dụ nhập vào cột B, D, F,G,I,J,L,M.
các cột khác có công thức sẵn.
 
Bạn đã viết được khá nhiều Code vậy chỉ cần gợi ý chắc bạn cũng sẽ làm được. Tôi gợi ý cho 2 thắc mắc của bạn
1/
Khi nhập liệu mình chọn check box nào thì dữ liệu được nhập vào sheet tên của check box tương ứng
Quan sát Form thì thấy tất cả các checkbox của bạn nằm trong Frame => sẽ lập Code lấy ra tên Checkbox nằm trong Frame nếu checkbox đó được tick. Khi đã có tên checkbox thì việc lựa chọn sheet là quá dễ dàng
Mã:
Sub TestGPE()
    Dim Obj As Control
    For Each Obj In Me.LINE_INPUT.Controls
        If Obj.Value = True Then
[COLOR=#ff0000]            Sheets(Obj.Caption).Select[/COLOR]
        End If
    Next
End Sub
2/
Có thể chọn đồng thời nhiều check box. cấu trúc gần như giống nhau, không nhập theo o liên tiếp trong dòng mà có khoảng cách cel trong dòng, vi dụ nhập vào cột B, D, F,G,I,J,L,M.
Gợi ý 1 sẽ cho bạn lựa chọn các sheet theo giá trị checkbox giờ việc còn lại là gán vào đâu thì bạ có thể làm theo dạng sau, thay đoạn màu đỏ bên trên bằng
Mã:
        Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = "Gia tri can dien"


Hy vọng bạn có thể áp dụng!
 
Upvote 0
Bạn đã viết được khá nhiều Code vậy chỉ cần gợi ý chắc bạn cũng sẽ làm được. Tôi gợi ý cho 2 thắc mắc của bạn
1/
Quan sát Form thì thấy tất cả các checkbox của bạn nằm trong Frame => sẽ lập Code lấy ra tên Checkbox nằm trong Frame nếu checkbox đó được tick. Khi đã có tên checkbox thì việc lựa chọn sheet là quá dễ dàng
Mã:
Sub TestGPE()
    Dim Obj As Control
    For Each Obj In Me.LINE_INPUT.Controls
        If Obj.Value = True Then
[COLOR=#ff0000]            Sheets(Obj.Caption).Select[/COLOR]
        End If
    Next
End Sub
2/
Gợi ý 1 sẽ cho bạn lựa chọn các sheet theo giá trị checkbox giờ việc còn lại là gán vào đâu thì bạ có thể làm theo dạng sau, thay đoạn màu đỏ bên trên bằng
Mã:
        Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = "Gia tri can dien"


Hy vọng bạn có thể áp dụng!
Hay quá, để mình thử có gì nhờ bạn giúp đỡ thêm. Từ ngày tập học làm macro tới giờ chưa tiến bộ nhiều được.Cảm ơn bạn
 
Upvote 0
Bạn đã viết được khá nhiều Code vậy chỉ cần gợi ý chắc bạn cũng sẽ làm được. Tôi gợi ý cho 2 thắc mắc của bạn
1/
Quan sát Form thì thấy tất cả các checkbox của bạn nằm trong Frame => sẽ lập Code lấy ra tên Checkbox nằm trong Frame nếu checkbox đó được tick. Khi đã có tên checkbox thì việc lựa chọn sheet là quá dễ dàng
Mã:
Sub TestGPE()
    Dim Obj As Control
    For Each Obj In Me.LINE_INPUT.Controls
        If Obj.Value = True Then
[COLOR=#ff0000]            Sheets(Obj.Caption).Select[/COLOR]
        End If
    Next
End Sub
2/
Gợi ý 1 sẽ cho bạn lựa chọn các sheet theo giá trị checkbox giờ việc còn lại là gán vào đâu thì bạ có thể làm theo dạng sau, thay đoạn màu đỏ bên trên bằng
Mã:
        Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = "Gia tri can dien"


Hy vọng bạn có thể áp dụng!
Bạn xem dùng mình, khi điền dữ liệu nhập vào cell trong sheet nó không nhập theo 1 dòng dữ liệu trống mà nhập vào các dòng khác nhau, cell sau tăng lên.Bạn sửa code dùm mình dữ liệu nhập vào dòng trống tiep theo dòng cò dữ liệu được ko? code mình viết.
Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If




'find first empty row in database
iRow = ws.Cells(Rows.Count, 12) _
.End(xlUp).Offset(1, 0).Row
'copy the data to the database
Dim Obj As Control
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = True Then
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[D65536].End(3).Offset(3, 0) = Me.ComboBox2.Value
Sheets(Obj.Caption).[F65536].End(3).Offset(4, 0) = Me.TextBox3.Value
Sheets(Obj.Caption).[G65536].End(3).Offset(5, 0) = Me.ComboBox1.Value
Sheets(Obj.Caption).[H65536].End(3).Offset(6, 0) = Me.TextBox5.Value
Sheets(Obj.Caption).[J65536].End(3).Offset(8, 0) = Me.TextBox6.Value
Sheets(Obj.Caption).[L65536].End(3).Offset(9, 0) = Me.TextBox7.Value
Sheets(Obj.Caption).[M65536].End(3).Offset(12, 0) = Me.TextBox8.Value


'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
End If
Next
Me.Ngay.SetFocus
End Sub
 
Upvote 0
Tôi cũng không xem hết File của bạn, nó quá dài nhưng có thể hướng dẫn bạn về hàm offset trong VBA.
Khi bạn dùng Offset trong VBA thì cấu trúc tương tự Offset trên cell
Mã:
.Offset (hàng, cột)
Hàng, cột là số hàng, cột bạn muốn di chuyển tương đối.
=> Như vậy khi dùng Sheets(Obj.Caption).[B65536].End(3) để lấy vị trí dòng cuối cùng thì để lấy dòng tiếp theo đó sẽ là di chuyển xuống 1 hàng tức
Mã:
[COLOR=#000000](*)  Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(1, 0)
[/COLOR]

Khi bạn muốn ghi tất cả các dữ liệu theo 1 hàng thì bạn nên dùng 1 cell làm chuẩn các cột khác Offset theo khi đó yếu tố "Cột" trong Offset sẽ thay đổi (còn hàng bạn đã điền giá trị rồi thì sẽ trở lại 0)
Ví dụ: với lệnh (*), tiếp theo chuyển cho cột C sẽ là
Mã:
[COLOR=#000000]Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(0, 1)
[/COLOR]

Cột D sẽ là
Mã:
[COLOR=#000000]Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(0, 2)
[/COLOR]
 
Upvote 0
Bạn xem dùng mình, khi điền dữ liệu nhập vào cell trong sheet nó không nhập theo 1 dòng dữ liệu trống mà nhập vào các dòng khác nhau, cell sau tăng lên.Bạn sửa code dùm mình dữ liệu nhập vào dòng trống tiep theo dòng cò dữ liệu được ko? code mình viết.
Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If




'find first empty row in database
iRow = ws.Cells(Rows.Count, 12) _
.End(xlUp).Offset(1, 0).Row
'copy the data to the database
Dim Obj As Control
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = True Then
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[D65536].End(3).Offset(3, 0) = Me.ComboBox2.Value
Sheets(Obj.Caption).[F65536].End(3).Offset(4, 0) = Me.TextBox3.Value
Sheets(Obj.Caption).[G65536].End(3).Offset(5, 0) = Me.ComboBox1.Value
Sheets(Obj.Caption).[H65536].End(3).Offset(6, 0) = Me.TextBox5.Value
Sheets(Obj.Caption).[J65536].End(3).Offset(8, 0) = Me.TextBox6.Value
Sheets(Obj.Caption).[L65536].End(3).Offset(9, 0) = Me.TextBox7.Value
Sheets(Obj.Caption).[M65536].End(3).Offset(12, 0) = Me.TextBox8.Value


'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
End If
Next
Me.Ngay.SetFocus
End Sub
Ah mình làm được rồi, mình sai ở dòng này mới đúng.
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[D65536].End(3).Offset(1, 0) = Me.ComboBox2.Value
Sheets(Obj.Caption).[F65536].End(3).Offset(1, 0) = Me.TextBox3.Value
Sheets(Obj.Caption).[G65536].End(3).Offset(1, 0) = Me.ComboBox1.Value
Sheets(Obj.Caption).[H65536].End(3).Offset(1, 0) = Me.TextBox5.Value
Sheets(Obj.Caption).[J65536].End(3).Offset(1, 0) = Me.TextBox6.Value
Sheets(Obj.Caption).[L65536].End(3).Offset(1, 0) = Me.TextBox7.Value
Sheets(Obj.Caption).[M65536].End(3).Offset(1, 0) = Me.TextBox8.Value

Nhưng vẫn còn muốn hỏi thêm chút bạn ah, muốn định dạng dữ liệu theo ý mình thì thế nào bạn.chẳng hạn
'Me.TextBox5 = Format(Text, "0000&0395&00")Dinh dang test nhap vao thanh dang vi du nhap "3319A1" thi dinh dang thanh "3319 0395 A1" ???
'Me.TextBox6 = Format(Text, "hh:mm")Dinh dang test nhap vao thanh dang hh:mm???
'Me.TextBox6 = Format(Text, "Shift0&-&0")Dinh dang test nhap vao thanh dang "shift1-1", neu nhap vao la 11 ???
 
Upvote 0
Tôi cũng không xem hết File của bạn, nó quá dài nhưng có thể hướng dẫn bạn về hàm offset trong VBA.
Khi bạn dùng Offset trong VBA thì cấu trúc tương tự Offset trên cell
Mã:
.Offset (hàng, cột)
Hàng, cột là số hàng, cột bạn muốn di chuyển tương đối.
=> Như vậy khi dùng Sheets(Obj.Caption).[B65536].End(3) để lấy vị trí dòng cuối cùng thì để lấy dòng tiếp theo đó sẽ là di chuyển xuống 1 hàng tức
Mã:
[COLOR=#000000](*)  Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(1, 0)
[/COLOR]

Khi bạn muốn ghi tất cả các dữ liệu theo 1 hàng thì bạn nên dùng 1 cell làm chuẩn các cột khác Offset theo khi đó yếu tố "Cột" trong Offset sẽ thay đổi (còn hàng bạn đã điền giá trị rồi thì sẽ trở lại 0)
Ví dụ: với lệnh (*), tiếp theo chuyển cho cột C sẽ là
Mã:
[COLOR=#000000]Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(0, 1)
[/COLOR]

Cột D sẽ là
Mã:
[COLOR=#000000]Sheets(Obj.Caption).[B65536].End(3)[/COLOR][COLOR=#000000].Offset(0, 2)
[/COLOR]
Ah mà bạn ơi, sao mình chọn nhập dữ liệu vào 3 sheet, chọn 3 check box tương ứng nhưng khi chạy code chỉ nhập vào 1 check box đầu tiên ah.code của e

Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet

Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If



'find SHEET THEO CHECK BOX


Dim Obj As Control
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = True Then


'copy the data to the database

Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 2) = Me.ComboBox2.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 4) = Me.TextBox3.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 5) = Me.ComboBox1.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Me.TextBox5.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 8) = Me.TextBox6.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 10) = Me.TextBox7.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 11) = Me.TextBox8.Value





'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""


End If
Next
Me.Ngay.SetFocus
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn chuyển khối lệnh Clear data ra khỏi vòng lặp, chuyển nó xuống sau next.
 
Upvote 0
Bạn chuyển khối lệnh Clear data ra khỏi vòng lặp, chuyển nó xuống sau next.
Cảm ơn nhiều "dhn46", bạn chỉ dùm mình thêm muốn trong cột combobox chỉ giới hạn cho nhập vào những giá trị theo list thì chỗ style = 2, nhưng lúc đó mình không nhập bằng tay từ bàn phím được mà phải kéo chuột để chọn. Mà dữ liệu list cỡ 1000 dòng mà kéo chọn thì không được.Vậy có cách nào cho nhập từ bàn phím mà cũng giới hạn nằm trong list, ngoài list ko nhập vào được mà báo lỗi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn nhiều "dhn46", bạn chỉ dùm mình thêm muốn trong cột combobox chỉ giới hạn cho nhập vào những giá trị theo list thì chỗ style = 2, nhưng lúc đó mình không nhập bằng tay từ bàn phím được mà phải kéo chuột để chọn. Mà dữ liệu list cỡ 1000 dòng mà kéo chọn thì không được.Vậy có cách nào cho nhập từ bàn phím mà cũng giới hạn nằm trong list, ngoài list ko nhập vào được mà báo lỗi.
Bạn thiết đặt thuộc tính Match Required thành True.
Cái này đơn giản nhất là thay đổi trong cửa sổ property
 
Upvote 0
Bạn thiết đặt thuộc tính Match Required thành True.
Cái này đơn giản nhất là thay đổi trong cửa sổ property
Ah cho mình hõi thêm chút nữa:
1./code để xoá tick trong check box sau khi nhập dữ liệu được không ah.Vì mình sợ lần sau nhập dữ liệu người nhập quên chọn tick vào check box.
2./Code để bắt buộc người nhập chọn tick vào check box trước khi nhấp "ok", sau khi ok thì xoá trắng tick check box như câu hỏi 1.
 
Upvote 0
Bạn nên quan sát và phỏng đoán Code một chút sẽ thấy cách làm. Bạn đã thấy có True thì sẽ có False. True để kiểm tra có tick thì False sẽ là không check.
Các dạng Code bắt lỗi thì cứ if mà bạn bắt thôi, nếu thỏa thì cho chạy không thì exit sub.
Nói chung học VBA bạn nên tích cực “đoán”, “tìm kiếm” và thực hành nhé. Có lẽ bạn cũng đã thỏa mãn câu hỏi cho topic này. Topic này nên đóng lại chứ nhỉ?
 
Upvote 0
Bạn nên quan sát và phỏng đoán Code một chút sẽ thấy cách làm. Bạn đã thấy có True thì sẽ có False. True để kiểm tra có tick thì False sẽ là không check.
Các dạng Code bắt lỗi thì cứ if mà bạn bắt thôi, nếu thỏa thì cho chạy không thì exit sub.
Nói chung học VBA bạn nên tích cực “đoán”, “tìm kiếm” và thực hành nhé. Có lẽ bạn cũng đã thỏa mãn câu hỏi cho topic này. Topic này nên đóng lại chứ nhỉ?
Minh thử không được nhờ bạn tư vấn thêm,Code mình làm thế này mà ko đươc:

Private Sub UserForm_Initialize()
Me.Ngay = Format(Now, "dd.mm.yyyy")
Me.TextBox5 = Format(TextBox5, "####0395##")
End Sub
-----------------------------------------------------------
Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet


Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If


'find SHEET THEO CHECK BOX


Dim Obj As Control
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = False Then
MsgBox "Ban chua chon LINE can nhap mau. Vui long chon LINE!", , "THONG BAO !"
Exit Sub
End If

If Obj.Value = True Then

'copy the data to the database
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 2) = Me.ComboBox2.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 4) = Me.TextBox3.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 5) = Me.ComboBox1.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Me.TextBox5.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 8) = Me.TextBox6.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 10) = Me.TextBox7.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 11) = Me.TextBox8.Value
End If
Next
'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
Me.LINE_INPUT = ""
Me.Ngay.SetFocus
End Sub

1./ Do ID number nhập từ lần trước mà ko nhớ thi mình phải thoát form xem, vậy có cách nào khi minh tick vào check box sheet nào thì hiện thông tin ID number( kí hiệu) lần nhập gần nhất của sheet tương ứng kế bên không bạn)
2./Ah trong text box nhập vào mình muốn định dạng thành "22350395A1" khi nhập vào là "2235A1" thì thế nào bạn.mình muốn khi nhập vào 4 số 2235 trên form thì sẽ hiện thêm la 2235 0395 va 2mình nhập tiếp A1.
 
Lần chỉnh sửa cuối:
Upvote 0
code mình làm được rồi, bạn xem đúng ko:
Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet
Dim Obj As Control

Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If
If KWT2 = False And CheckBox1 = False And CheckBox2 = False And CheckBox3 = False And CheckBox4 = False And CheckBox5 = False And CheckBox6 = False And CheckBox7 = False And CheckBox8 = False And CheckBox9 = False And CheckBox10 = False And CheckBox11 = False And CheckBox12 = False Then
MsgBox "Ban chua chon LINE nhap. Vui long chon!", , "THONG BAO !"
Exit Sub
End If
'find SHEET THEO CHECK BOX
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = True Then
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 2) = Me.ComboBox2.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 4) = Me.TextBox3.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 5) = Me.ComboBox1.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Me.TextBox5.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 8) = Me.TextBox6.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 10) = Me.TextBox7.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 11) = Me.TextBox8.Value
End If
Next
'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
KWT2 = False
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False
CheckBox4 = False
CheckBox5 = False
CheckBox6 = False
CheckBox7 = False
CheckBox8 = False
CheckBox9 = False
CheckBox10 = False
CheckBox11 = False
CheckBox12 = False
Me.Ngay.SetFocus
End Sub

--->Giờ còn phần định dạng khi nhập "2233A2" thành "22330395A2" chưa được, mong giúp đỡ.Mình thử trên cell, form cũng không được.bí quá mò không ra
 
Lần chỉnh sửa cuối:
Upvote 0
code mình làm được rồi, bạn xem đúng ko:
Private Sub Ok_Click()
Dim iRow As Long
Dim ws As Worksheet
Dim Obj As Control

Set ws = Worksheets("FORM INPUT")
If Ngay = "" Or ComboBox2 = "" Or TextBox3 = "" Or ComboBox1 = "" Or TextBox5 = "" Or TextBox6 = "" Or TextBox7 = "" Or TextBox8 = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
End If
If KWT2 = False And CheckBox1 = False And CheckBox2 = False And CheckBox3 = False And CheckBox4 = False And CheckBox5 = False And CheckBox6 = False And CheckBox7 = False And CheckBox8 = False And CheckBox9 = False And CheckBox10 = False And CheckBox11 = False And CheckBox12 = False Then
MsgBox "Ban chua chon LINE nhap. Vui long chon!", , "THONG BAO !"
Exit Sub
End If
'find SHEET THEO CHECK BOX
For Each Obj In Me.LINE_INPUT.Controls
If Obj.Value = True Then
Sheets(Obj.Caption).[B65536].End(3).Offset(1, 0) = Me.Ngay.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 2) = Me.ComboBox2.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 4) = Me.TextBox3.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 5) = Me.ComboBox1.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Me.TextBox5.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 8) = Me.TextBox6.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 10) = Me.TextBox7.Value
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 11) = Me.TextBox8.Value
End If
Next
'clear the data
Ngay = ""
ComboBox2 = ""
TextBox3 = ""
ComboBox1 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
KWT2 = False
CheckBox1 = False
CheckBox2 = False
CheckBox3 = False
CheckBox4 = False
CheckBox5 = False
CheckBox6 = False
CheckBox7 = False
CheckBox8 = False
CheckBox9 = False
CheckBox10 = False
CheckBox11 = False
CheckBox12 = False
Me.Ngay.SetFocus
End Sub

--->Giờ còn phần định dạng khi nhập "2233A2" thành "22330395A2" chưa được, mong giúp đỡ.Mình thử trên cell, form cũng không được.bí quá mò không ra
Hóa ra chỉ sửa đổi code chút :
Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Me.TextBox5.Value
thành:

Sheets(Obj.Caption).[B65536].End(3).Offset(0, 6) = Left(Me.TextBox5.Value, 4) & "0395" & Right(Me.TextBox5.Value, 2)

Nhưng chỉ sau khi nhập, còn hiển thị lúc đang nhập luôn thì chưa được. Giớ lại thêm yêu cầu mới bị bí chưa nghiên cứu được mà cũng chưa ai chĩ giúp.
--->>>>làm thêm textbox_thongtin hiển thị thông tin của sheet mà chọn trong check box (được tick), có thể hiển thị theo thanh cuộn. nếu 2 checkbx được tick thì textbox_thongtin được chia làm 2 để hiển thị thông tin 2 sheet. Tương tự chọn 3 checkbox thì chia làm 3 để hiển thị
 
Upvote 0
Web KT
Back
Top Bottom