Các câu hỏi về Form trong Excel VBA

Liên hệ QC

Tường_Vi

Thành viên tiêu biểu
Tham gia
19/4/10
Bài viết
482
Được thích
121
Nghề nghiệp
Luôn tìm kiếm một vị trí tốt hơn
Private Sub UserForm_Initialize()
.......................
.......................
.......................
End Sub


Em xin hỏi, sự kiện khí nào mình dùng sự kiện này Initialize

Cám ơn
 
Bài toán:
1> tại sheet ma_hang ấn nút new-sheet => tạo ra sheet mới theo yêu cầu
2> tại sheet mới tạo tiến hành nhập dữ liệu => dữ liệu tại sheet mới được tạo ra lại chuyển về sheet_mau
Hỏi: nếu ta chọn 1 trong những sheet vừa được tạo vào tiến hành nhập dữ liệu từ form
- làm thế nào để nội dung được nhập từ form sẽ được cập nhập tại sheet mới mà ta đang mở
(tóm lại dữ liệu được nhập ở sheet hiện hành thì nội dung nhập từ form sẽ được cập nhập tại sheet đó)
xin cảm ơn. nhờ mọi người giúp đỡ!
 

File đính kèm

  • Hung_Kho_PhoVong.xlsm
    148.2 KB · Đọc: 17
Lần chỉnh sửa cuối:
Upvote 0
- làm thế nào để nội dung được nhập từ form sẽ được cập nhập tại sheet mới mà ta đang mở
Sheet đang mở là ActiveSheet. Tức thay cho
Mã:
dong_cuoi = Sheet1.Range("A10000").End(xlUp).Row + 1
With Sheet1
    ....
    
End Sub

thì là
Mã:
dong_cuoi = ActiveSheet.Range("A10000").End(xlUp).Row + 1
With ActiveSheet
    ....
    
End Sub
hoặc
Mã:
With ActiveSheet
    dong_cuoi = .Range("A10000").End(xlUp).Row + 1
    ....
    
End Sub
 
Upvote 0
Bài toán:
1> . . . . . .
2>. . . . . .
Mình chỉ xin góp vài ý về cấu trúc khi xây dựng CSDL của bạn, từ những điều nhỏ nhất, như sau:

Tại trang 'Kho'
Thứ nhất tên trang tính như mình viết, viết in hoàn toàn không dễ đọc hơn, fải vậy không?
Tiếp: Các cột từ A đến C ở trang này có 2 bảng; Mình tạm gọi bảng A bên trên & bảng B bên dưới
Bảng bên trên: Với mình 1 CSDL nào cũng vậy, mã hàng là rất quan trọng, nó là xương sống của 1 CSDL, vậy nên nó có trước & nên có trước khi nhập số lượng của mã hàng đó. Có nghĩa là mình đề nghị bạn hoán đổi 2 cột B & C trong bảng A này cho nhau;
(Với mình thì trường/cột [Mã HH] này luôn có trước cả tên hàng hóa; Điều này có khi tiện trong việc sử dụng hàm VLOOKUP() không chừng!)

Với bảng B bên dưới hoàn toàn ta không nên để ở đó; Ta fải chuyển nó sang các cột khác fía sau như từ cột H trở đi'
Vì 1 chuyện hiển nhiên là bảng A sẽ không tĩnh tại trong quá trình vận hành CSDL, nó có thể co rút hay tăng số dòng dữ liệu của nó; & như vậy sẽ ảnh hưởng đến ghế ngồi của bảng B

Thứ nữa: Bảng dữ liệu nào cũng nên có tiêu đề (cột/trường); Ở trang 'MaHang' (như cách mình gọi) chưa có & là điều không nên.

Chuyện cuối cùng: Bạn có thể cho biết lí do cần tạo mới nhiều trang tính làm vậy?
Mình sẽ rất vui nếu được bạn cho biết về điều này
& Chúc bạn ngày làm việc cuối tuần kết quả mỹ mãn!
 
Upvote 0
Mình chỉ xin góp vài ý về cấu trúc khi xây dựng CSDL của bạn, từ những điều nhỏ nhất, như sau:

xin cảm ơn bạn đã đóng góp ý kiến!
vấn đề bạn hỏi:
Chuyện cuối cùng: Bạn có thể cho biết lí do cần tạo mới nhiều trang tính làm vậy?
Mình sẽ rất vui nếu được bạn cho biết về điều này
lý do:
1. cty có rất nhiều loại hàng khác nhau tầm 107 mã hàng
2. tại sheet kho có siêu liên kết đến các sheet mới tạo (tiện cho việc quản lý)
3. mỗi mã hàng để ở 1 sheet tiện cho việc theo dõi và dễ nhìn hơn
 
Upvote 0
Mình chỉ xin góp vài ý về cấu trúc khi xây dựng CSDL của bạn, từ những điều nhỏ nhất, như sau:
....................................................................................................
Mình sẽ rất vui nếu được bạn cho biết về điều này
& Chúc bạn ngày làm việc cuối tuần kết quả mỹ mãn!
Đã mở Topic trước khi đăng bài ở đây rồi anh ơi, Link bài viết kia:
https://www.giaiphapexcel.com/diendan/threads/Đơn-giản-hóa-lệnh-if.137908/
 
Upvote 0
Upvote 0
Lý do:
1. cty có rất nhiều loại hàng khác nhau tầm 107 mã hàng
2. tại sheet kho có siêu liên kết đến các sheet mới tạo (tiện cho việc quản lý)
3. mỗi mã hàng để ở 1 sheet tiện cho việc theo dõi và dễ nhìn hơn
(1) 107 mặt hàng (MH) là đồ bỏ!
Vậy ~5 ngàn MH, bạn xài 5 ngàn trang tính chắt?
Thường người ta cần ngâm cứu MH nào chỉ việc trích nó ra 0001 trang duy nhất (ở dạng báo cáo) để xem mà thôi.
(2) Có thể đối với bạn là tiên, nhưng với người khác các siêu liên kết chỉ tổ mất công & mất của hơn mà thôi!
(3) Xem lại (1)
 
Upvote 0
(1) 107 mặt hàng (MH) là đồ bỏ!
Vậy ~5 ngàn MH, bạn xài 5 ngàn trang tính chắt?
Thường người ta cần ngâm cứu MH nào chỉ việc trích nó ra 0001 trang duy nhất (ở dạng báo cáo) để xem mà thôi.
(2) Có thể đối với bạn là tiên, nhưng với người khác các siêu liên kết chỉ tổ mất công & mất của hơn mà thôi!
(3) Xem lại (1)
bạn có thể cho mình xin tài liệu để mình tìm hiểu thêm về vấn đề bạn đang đề cập được không?
xin cảm ơn!
 
Upvote 0
Em xin nhờ các anh chị giúp phần code ạ.
Em muốn tạo form như trong file
Trong đó txtbox1 (để nhập mã trong cột A) ví dụ DN1
sau khi nhập tại combobox1 sẽ hiện danh sách những tên ứng với mã vừa nhập sẽ là Cộng, Việt
Tiếp đó lại chọn 1 trong 2 kết quả trong combobox 1 ví dụ là Việt
thì tại txtbox2 sẽ hiện phần chi tiết tương ứng là Cơm...
 

File đính kèm

  • Vande.xlsx
    10.1 KB · Đọc: 10
Upvote 0
Không gõ được chữa "c" vào combobox, không chọn được dữ liệu trong combobox là lý do gì mọi người giúp em trong vd
 

File đính kèm

  • Book1.xlsm
    15.4 KB · Đọc: 7
Upvote 0
a/C NÀO CÓ THỂ RÚT NGẮN ĐOẠN CODE NÀY DÙM MÌNH VỚI, MÌNH MỚI TÌM HIỂU VỀ VBA NÊN CÓ NHỮNG CÁI CODE DÀI " THẦN THÁNH" ....
Mã:
Private Sub ComboBox3_change()
On Error Resume Next
mnv = Me.cbmnv.Value
If ComboBox3 = 1 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 3, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 5, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 7, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 9, 0)
ElseIf ComboBox3 = 2 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 11, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 13, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 15, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 17, 0)
ElseIf ComboBox3 = 3 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 19, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 21, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 23, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 25, 0)
ElseIf ComboBox3 = 4 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 27, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 29, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 31, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 33, 0)
ElseIf ComboBox3 = 5 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 35, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 37, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 39, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 41, 0)
ElseIf ComboBox3 = 6 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 43, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 45, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 47, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 49, 0)
ElseIf ComboBox3 = 7 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 51, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 53, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 55, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 57, 0)
ElseIf ComboBox3 = 8 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 59, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 61, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 63, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 65, 0)
ElseIf ComboBox3 = 9 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 67, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 69, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 71, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 73, 0)
ElseIf ComboBox3 = 10 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 75, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 77, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 79, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 81, 0)
ElseIf ComboBox3 = 11 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 83, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 85, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 87, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 89, 0)
ElseIf ComboBox3 = 12 Then
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 91, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 93, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 95, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 97, 0)

End If
End Sub
Mã:
Private Sub cmb_record_Click()
Dim SLNo As Integer
If Me.ComboBox2.Value = "" Then
MsgBox "CHUA CO SO THU TU !!!"
Exit Sub
End If
SLNo = Me.ComboBox2.Value
Sheets("KPI").Select
Dim rowselect As Double
rowselect = Me.ComboBox2.Value
rowselect = rowselect + 5
Rows(rowselect).Select
If ComboBox3 = 1 Then
Cells(rowselect, "D").Value = Me.TxtDSNS.Value
Cells(rowselect, "F").Value = Me.TxtDSCC.Value
Cells(rowselect, "H").Value = Me.TxtDSNQ.Value
Cells(rowselect, "J").Value = Me.TxtDSTD.Value
Cells(rowselect, "E").Value = Me.TextBox2.Value
Cells(rowselect, "G").Value = Me.TextBox3.Value
Cells(rowselect, "I").Value = Me.TextBox5.Value
Cells(rowselect, "K").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 2 Then
Cells(rowselect, "L").Value = Me.TxtDSNS.Value
Cells(rowselect, "N").Value = Me.TxtDSCC.Value
Cells(rowselect, "P").Value = Me.TxtDSNQ.Value
Cells(rowselect, "R").Value = Me.TxtDSTD.Value
Cells(rowselect, "M").Value = Me.TextBox2.Value
Cells(rowselect, "O").Value = Me.TextBox3.Value
Cells(rowselect, "Q").Value = Me.TextBox5.Value
Cells(rowselect, "S").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 3 Then
Cells(rowselect, "T").Value = Me.TxtDSNS.Value
Cells(rowselect, "V").Value = Me.TxtDSCC.Value
Cells(rowselect, "X").Value = Me.TxtDSNQ.Value
Cells(rowselect, "Z").Value = Me.TxtDSTD.Value
Cells(rowselect, "U").Value = Me.TextBox2.Value
Cells(rowselect, "W").Value = Me.TextBox3.Value
Cells(rowselect, "Y").Value = Me.TextBox5.Value
Cells(rowselect, "AA").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 4 Then
Cells(rowselect, "AB").Value = Me.TxtDSNS.Value
Cells(rowselect, "AD").Value = Me.TxtDSCC.Value
Cells(rowselect, "AF").Value = Me.TxtDSNQ.Value
Cells(rowselect, "AH").Value = Me.TxtDSTD.Value
Cells(rowselect, "AC").Value = Me.TextBox2.Value
Cells(rowselect, "AE").Value = Me.TextBox3.Value
Cells(rowselect, "AG").Value = Me.TextBox5.Value
Cells(rowselect, "AI").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 5 Then
Cells(rowselect, "AJ").Value = Me.TxtDSNS.Value
Cells(rowselect, "AL").Value = Me.TxtDSCC.Value
Cells(rowselect, "AN").Value = Me.TxtDSNQ.Value
Cells(rowselect, "AP").Value = Me.TxtDSTD.Value
Cells(rowselect, "AK").Value = Me.TextBox2.Value
Cells(rowselect, "AM").Value = Me.TextBox3.Value
Cells(rowselect, "AO").Value = Me.TextBox5.Value
Cells(rowselect, "AQ").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 6 Then
Cells(rowselect, "AR").Value = Me.TxtDSNS.Value
Cells(rowselect, "AT").Value = Me.TxtDSCC.Value
Cells(rowselect, "AV").Value = Me.TxtDSNQ.Value
Cells(rowselect, "AX").Value = Me.TxtDSTD.Value
Cells(rowselect, "AS").Value = Me.TextBox2.Value
Cells(rowselect, "AU").Value = Me.TextBox3.Value
Cells(rowselect, "AW").Value = Me.TextBox5.Value
Cells(rowselect, "AY").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 7 Then
Cells(rowselect, "AZ").Value = Me.TxtDSNS.Value
Cells(rowselect, "BB").Value = Me.TxtDSCC.Value
Cells(rowselect, "BD").Value = Me.TxtDSNQ.Value
Cells(rowselect, "BF").Value = Me.TxtDSTD.Value
Cells(rowselect, "BA").Value = Me.TextBox2.Value
Cells(rowselect, "BC").Value = Me.TextBox3.Value
Cells(rowselect, "BE").Value = Me.TextBox5.Value
Cells(rowselect, "BG").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 8 Then
Cells(rowselect, "BH").Value = Me.TxtDSNS.Value
Cells(rowselect, "BJ").Value = Me.TxtDSCC.Value
Cells(rowselect, "BL").Value = Me.TxtDSNQ.Value
Cells(rowselect, "BN").Value = Me.TxtDSTD.Value
Cells(rowselect, "BI").Value = Me.TextBox2.Value
Cells(rowselect, "BK").Value = Me.TextBox3.Value
Cells(rowselect, "BM").Value = Me.TextBox5.Value
Cells(rowselect, "BO").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 9 Then
Cells(rowselect, "BP").Value = Me.TxtDSNS.Value
Cells(rowselect, "BR").Value = Me.TxtDSCC.Value
Cells(rowselect, "BT").Value = Me.TxtDSNQ.Value
Cells(rowselect, "BV").Value = Me.TxtDSTD.Value
Cells(rowselect, "BQ").Value = Me.TextBox2.Value
Cells(rowselect, "BS").Value = Me.TextBox3.Value
Cells(rowselect, "BU").Value = Me.TextBox5.Value
Cells(rowselect, "BW").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 10 Then
Cells(rowselect, "BX").Value = Me.TxtDSNS.Value
Cells(rowselect, "BZ").Value = Me.TxtDSCC.Value
Cells(rowselect, "CB").Value = Me.TxtDSNQ.Value
Cells(rowselect, "CD").Value = Me.TxtDSTD.Value
Cells(rowselect, "BY").Value = Me.TextBox2.Value
Cells(rowselect, "CA").Value = Me.TextBox3.Value
Cells(rowselect, "CC").Value = Me.TextBox5.Value
Cells(rowselect, "CE").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 11 Then
Cells(rowselect, "CF").Value = Me.TxtDSNS.Value
Cells(rowselect, "CH").Value = Me.TxtDSCC.Value
Cells(rowselect, "CJ").Value = Me.TxtDSNQ.Value
Cells(rowselect, "CL").Value = Me.TxtDSTD.Value
Cells(rowselect, "CG").Value = Me.TextBox2.Value
Cells(rowselect, "CI").Value = Me.TextBox3.Value
Cells(rowselect, "CK").Value = Me.TextBox5.Value
Cells(rowselect, "CM").Value = Me.TextBox4.Value
ElseIf ComboBox3 = 12 Then
Cells(rowselect, "CN").Value = Me.TxtDSNS.Value
Cells(rowselect, "CP").Value = Me.TxtDSCC.Value
Cells(rowselect, "CR").Value = Me.TxtDSNQ.Value
Cells(rowselect, "CT").Value = Me.TxtDSTD.Value
Cells(rowselect, "CO").Value = Me.TextBox2.Value
Cells(rowselect, "CQ").Value = Me.TextBox3.Value
Cells(rowselect, "CS").Value = Me.TextBox5.Value
Cells(rowselect, "CU").Value = Me.TextBox4.Value

End If
MsgBox "HOÀN THÀNH CÂP NHÂT KPI'S VÀO DANH SÁCH"

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Code (1)
PHP:
Private Sub ComboBox3_change()
Dim CB3 As String, Num As Integer

CB3 = Me!ComboBox3.Text
Num = Switch(CB3 = "1", 3, CB3 = "2", 11, CB3 = "3", 19, CB3 = "4", 27, _
           CB3 = "5", 35, CB3 = "6", 43, CB3 = "7", 51, CB3 = "8", 59)        'Còn Thêm . . .   '
Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), Num, 0)
Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), Num + 2, 0)
Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), Num + 4, 0)
Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), Num + 6, 0)
End Sub
 
Upvote 0
Nếu tôi không lầm thì trong ComBobox3 chỉ có 12 giá trị 1, 2, ..., 12
Nếu còn các giá trị khác thì phải kiểm tra thêm xem Combobox3.Value có thuộc [1;12] hay không.


Mã:
Private Sub ComboBox3_Change()
Dim cb3 As Long
    If ComboBox3.ListIndex = -1 Then Exit Sub
    On Error Resume Next
    mnv = Me.cbmnv.Value
    cb3 = ComboBox3.Value
    Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 5, 0)
    Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 3, 0)
    Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 1, 0)
    Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 + 1, 0)
End Sub

Private Sub cmb_record_Click()
Dim SLNo As Integer, cb3 As Long
Dim rowselect As Double
    If Me.ComboBox2.Value = "" Then
        MsgBox "CHUA CO SO THU TU !!!"
        Exit Sub
    End If
    If ComboBox3.ListIndex = -1 Then Exit Sub
    
    SLNo = Me.ComboBox2.Value
    cb3 = ComboBox3.Value
    Sheets("KPI").Select
    
    rowselect = Me.ComboBox2.Value
    rowselect = rowselect + 5
    Rows(rowselect).Select
    
    Cells(rowselect, 8 * cb3 - 4).Value = Me.TxtDSNS.Value
    Cells(rowselect, 8 * cb3 - 2).Value = Me.TxtDSCC.Value
    Cells(rowselect, 8 * cb3).Value = Me.TxtDSNQ.Value
    Cells(rowselect, 8 * cb3 + 2).Value = Me.TxtDSTD.Value
    Cells(rowselect, 8 * cb3 - 3).Value = Me.TextBox2.Value
    Cells(rowselect, 8 * cb3 - 1).Value = Me.TextBox3.Value
    Cells(rowselect, 8 * cb3 + 1).Value = Me.TextBox5.Value
    Cells(rowselect, 8 * cb3 + 3).Value = Me.TextBox4.Value
End Sub
 
Upvote 0
Nếu tôi không lầm thì trong ComBobox3 chỉ có 12 giá trị 1, 2, ..., 12
Nếu còn các giá trị khác thì phải kiểm tra thêm xem Combobox3.Value có thuộc [1;12] hay không.


Mã:
Private Sub ComboBox3_Change()
Dim cb3 As Long
    If ComboBox3.ListIndex = -1 Then Exit Sub
    On Error Resume Next
    mnv = Me.cbmnv.Value
    cb3 = ComboBox3.Value
    Me.TxtDSNS.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 5, 0)
    Me.TxtDSCC.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 3, 0)
    Me.TxtDSNQ.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 - 1, 0)
    Me.TxtDSTD.Value = Application.WorksheetFunction.VLookup(mnv, Sheets("KPI").Range("b5:DC500"), 8 * cb3 + 1, 0)
End Sub

Private Sub cmb_record_Click()
Dim SLNo As Integer, cb3 As Long
Dim rowselect As Double
    If Me.ComboBox2.Value = "" Then
        MsgBox "CHUA CO SO THU TU !!!"
        Exit Sub
    End If
    If ComboBox3.ListIndex = -1 Then Exit Sub
   
    SLNo = Me.ComboBox2.Value
    cb3 = ComboBox3.Value
    Sheets("KPI").Select
   
    rowselect = Me.ComboBox2.Value
    rowselect = rowselect + 5
    Rows(rowselect).Select
   
    Cells(rowselect, 8 * cb3 - 4).Value = Me.TxtDSNS.Value
    Cells(rowselect, 8 * cb3 - 2).Value = Me.TxtDSCC.Value
    Cells(rowselect, 8 * cb3).Value = Me.TxtDSNQ.Value
    Cells(rowselect, 8 * cb3 + 2).Value = Me.TxtDSTD.Value
    Cells(rowselect, 8 * cb3 - 3).Value = Me.TextBox2.Value
    Cells(rowselect, 8 * cb3 - 1).Value = Me.TextBox3.Value
    Cells(rowselect, 8 * cb3 + 1).Value = Me.TextBox5.Value
    Cells(rowselect, 8 * cb3 + 3).Value = Me.TextBox4.Value
End Sub
code hok chạy !!!!:(
 
Upvote 0
Chào cả nhà, mình đang tập làm VBA, mình có tạo 1 form (file 2019-Test), khi mình tạo nút nhấn OK để tạo new workbook và sẽ copy tất cả các sheet từ file BGmau sang new workbook vừa tạo ra. Mình đang bị kẹt chỗ là new workbook vừa tạo nó chỉ có copy dc Sheet "ChiTiet" còn Sheet "BGgui" nó lại ko qua được. Mong mọi người tham khảo đoạn code của mình và giúp mình gỡ rối nha. Thank all
P/S: New workbook tạo ra lúc nào cũng có thêm sheet1, nên mình mới nhập thêm dòng X.Sheets("sheet1").Delete để xóa Sheet1 đó đi. Có cách nào để khi tạo new workbook mới thì ko dính thêm sheet1 nữa ko ạ.Mình chỉ muốn có 2 sheet là "ChiTiet" và "BGgui" trong new workbook thôi.

Private Sub btaddOK_Click()
Dim A, B, C As String
Dim X As Workbook
Dim sFil As String
Dim owb As Workbook
Dim ws As Worksheet
Dim sh As Worksheet
A = ComboBox1.Value
B = TextBox1.Value
C = TextBox2.Value
Set X = Workbooks.add
Const sPath = "D:\Test VBA\"
Application.ScreenUpdating = False
Set ws = X.Sheets(Sheets.Count)
sFil = Dir(sPath & "BG mau.xls")

Set owb = Workbooks.Open(sPath & sFil)
For Each sh In owb.Sheets
sh.Copy before:=ws '

owb.Close False
sFil = Dir

X.Sheets("sheet1").Delete
' truy xuat du lieu tu form toi file excel moi '
X.Worksheets(1).Range("H2").End(xlUp).Offset(1, 0).Value = ComboBox1.Text
X.Worksheets(1).Range("G2").End(xlUp).Offset(1, 0).Value = TextBox1.Text
X.Worksheets(1).Range("I2").End(xlUp).Offset(1, 0).Value = TextBox2.Text
X.Worksheets(1).Range("J2").End(xlUp).Offset(1, 0).Value = ComboBox2.Text
X.Worksheets(1).Range("Y2").End(xlUp).Offset(1, 0).Value = ComboBox3.Text

Application.ScreenUpdating = True

X.SaveAs Filename:="D:\Test VBA\" & A & "." & B & "." & C & ".xls"

X.Close

End Sub
 

File đính kèm

  • 2019 - TEST.xlsm
    35.3 KB · Đọc: 6
  • BG mau.xls
    235 KB · Đọc: 5
Upvote 0
Chả là e có mày mò làm một file nhập liệu theo dõi kinh phí các đơn vị. Tuy nhiên khi nhập liệu vào textbox thì Kết quả ở cột G không thể hiện là dạng số cho nên không thực hiện tính tổng được. Chỉ cần cột "Dự toán được giao" thể hiện ở dạng số thôi ạ.
E gửi cả file của em theo bài viết mong các cao nhân chỉ giáo giúp em ạ.
 

File đính kèm

  • New_Nhập dữ liệu.xlsm
    127.7 KB · Đọc: 11
Upvote 0
Web KT

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

Back
Top Bottom