Chào Gitiho. Tôi xin nhờ Gitiho hỗ trợ giúp tôi!
trong 1 sub tôi gọi 1 userform có 2 comantbutton để người dùng lựa chọn nếu người dùng click comantbutton 1 thì thực hiện câu lệnh 1 trong sub, click comantbutton 2 thì thực hiện câu lệnh 2 trong sub, nếu người dùng chọn dấu x đóng userform thì exit sub luôn
Xin cảm ơn Gitiho
còn nữa là khi click 1 trong 2 comantbutton đều đóng userform
Chào bạn bạn mở userform tạo sự kiện với nút bấm bạn chỉ cần gọi nút đó là được nếu đóng from bạn sẽ xử dụng unload me nhé.
Tôi chưa hiểu lắm gitiho cho tôi xin 1 đoạn code vị dụ được không ạ
Xin cảm ơn
Chào bạn đây là một vidu nhé
với code như sau
Option Explicit
Private Sub CommandButton1_Click()
MsgBox "Gitiho", vbInformation, "Excel"
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
nút 1 tương ứng với CommandButton1
nút 2 tương ứng với CommandButton2
Cảm ơn Gitiho ví dụ này thì tôi hiểu nhưng khi áp dụng vào tình huống này của tôi thì tôi lại rối nhờ Gitiho vui lòng hướng dẫn tôi thêm chỗ này
Option Explicit
Sub goi_userform_tuong_tac_nguoi_dung()
PA.Show
'Neu nguoi dung click Nut 1 thi thuc hien cau lenh 1
a = b + c
'Neu nguoi dung click Nut 2 thi thuc hien cau lenh 2
a = b - c
'Neu nguoi dung dong hop thoi thi thoat chuong trinh
Exit Sub
End Sub
Chào bạn bạn kích vào hai nút đó sẽ sinh ra code bạn nhé
Private Sub CommandButton1_Click()
dim a, b, c a = b+c msgbox a
End SubPrivate Sub CommandButton2_Click()
dim a, b, c a = b-c msgbox a
End Sub
tôi cần thực hiện câu lệnh thực hiện trong sub, tức là khi click thì giá trị của userform được gán vào sub
tôi đang rối nên chưa biết nói sao để gitiho hiểu rõ ý muốn của tôi
Chào bạn nghĩa là bạn kích vào một nút sẽ thực hiện một hành động bạn làm theo thế này nhé
với code như sau
Option Explicit
Private Sub CommandButton1_Click()
MsgBox "Gitiho", vbInformation, "Excel"
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
nút 1 tương ứng với CommandButton1
nút 2 tương ứng với CommandButton2
kích đúp vào nút 1 và nút nút 2 sẽ tự động sinh ra
Private Sub CommandButton2_Click() end sub
Toàn bộ code của tôi, tôi vẫn chưa giải được nhờ gitiho xem giúp tôi cái này nhé. tôi đang vướng ở phần tô đậm
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target = "" Then
Exit Sub
Else
Dim DC_DBN As Single
DC_DBN = WB_CDB.Sheet5.Range("D" & Rows.CountLarge).End(xlUp).Row
If Not Application.Intersect(Target, Range("D3:D" & DC_DBN)) Is Nothing Then
'Tat cap nhat man hinh
Application.ScreenUpdating = False
'Hien sheet Lenh San Xuat
WB_CDB.Sheet11.Visible = xlSheetVisible
'Xoa het du lieu cu
'Xoa Ngay
WB_CDB.Sheet11.Range("A1, A16, A31, A46, A61, A76, A91").ClearContents
'Xoa Gio
WB_CDB.Sheet11.Range("B1, B16, B31, B46, B61, B76, B91").ClearContents
'Xoa Ma Form
WB_CDB.Sheet11.Range("D1:I1, D16:I16, D31:I31, D46:I46, D61:I61, D76:I76, D91:I91").ClearContents
'Xoa SO
WB_CDB.Sheet11.Range("K1:N1, K16:N16, K31:N31, K46:N46, K61:N61, K76:N76, K91:N91").ClearContents
'Xoa Packing Method
WB_CDB.Sheet11.Range("P1:T1, P16:T16, P31:T31, P46:T46, P61:T61, P76:T76, P91:T91").ClearContents
'Xoa Dich Den
WB_CDB.Sheet11.Range("V1:AB1, V16:AB16, V31:AB31, V46:AB46, V61:AB61, V76:AB76, V91:AB91").ClearContents
'Xoa PO
WB_CDB.Sheet11.Range("A4:A7, A19:A22, A34:A37, A49:A52, A64:A67, A79:A82, A94:A97").ClearContents
'Xoa Ma Giay
WB_CDB.Sheet11.Range("B4:B7, B19:B22, B34:B37, B49:B52, B64:B67, B79:B82, B94:B97").ClearContents
'Xoa Mau
WB_CDB.Sheet11.Range("C4:C7, C19:C22, C34:C37, C49:C52, C64:C67, C79:C82, C94:C97").ClearContents
'Xoa Xuat Hang
WB_CDB.Sheet11.Range("D4:D7, D19:D22, D34:D37, D49:D52, D64:D67, D79:D82, D94:D97").ClearContents
'Xoa So Luong
WB_CDB.Sheet11.Range("F4:AA8, F19:AA23, F34:AA38, F49:AA53, F64:AA68, F79:AA83, F94:AA98").ClearContents
'Xoa Chuyen
WB_CDB.Sheet11.Range("AB3:AB4, AB18:AB19, AB33:AB34, AB48:AB49, AB63:AB64, AB78:AB79, AB93:AB94").ClearContents
'Xoa Ket
WB_CDB.Sheet11.Range("AB5:AB7, AB20:AB22, AB35:AB37, AB50:AB52, AB65:AB67, AB80:AB82, AB95:AB97").ClearContents
'Xoa vong form
WB_CDB.Sheet11.Range("E99:AA106").ClearContents
'Cap nhat du lieu moi
'Dien PO
WB_CDB.Sheet11.Range("A4, A19, A34, A49, A64, A79, A94") = Target.Value
'Dien Ma Giay
WB_CDB.Sheet11.Range("B4, B19, B34, B49, B64, B79, B94") = Target.Offset(, 1).Value
'Dien Mau
WB_CDB.Sheet11.Range("C4, C19, C34, C49, C64, C79, C94") = Target.Offset(, 2).Value
'Dien Xuat Hang
WB_CDB.Sheet11.Range("D4, D19, D34, D49, D64, D79, D94") = Target.Offset(, 4).Value
'Dien SO
WB_CDB.Sheet11.Range("K1, K16, K31, K46, K61, K76, K91") = Target.Offset(, -1).Value
'Dien Packing Method
If Target.Offset(, 6).Value = "" Or Target.Offset(, 6).Value <= 0 Then
MsgBox "Chua xac dinh Packing Method, vui long cap nhat lai thong tin", vbInformation + vbOKOnly, "Canh bao"
WB_CDB.Sheet5.Activate
Target.Offset(, 6).Activate: Exit Sub
Else
WB_CDB.Sheet11.Range("P1, P16, P31, P46, P61, P76, P91") = Target.Offset(, 6).Value
End If
'Dien Dich Den
WB_CDB.Sheet11.Range("V1, V16, V31, V46, V61, V76, V91") = Target.Offset(, 3).Value
'Dien line
WB_CDB.Sheet11.Range("AB3, AB18, AB33, AB48, AB63, AB78, AB93") = "C" & Target.Offset(, 7).Value
'Dien Ma Form
WB_CDB.Sheet11.Range("D1, D16, D31, D46, D61, D76, D91") = Target.Offset(, -3).Value
'Dien so luong form
'Hien sheet form
WB_CDB.Sheet12.Visible = xlSheetVisible
'Dong cuoi danh sach form
Dim DC_Fo, f As Single
DC_Fo = WB_CDB.Sheet12.Range("C" & Rows.CountLarge).End(xlUp).Row
f = 3
Do
'Neu dung ma form thi den xet ma giay
If WB_CDB.Sheet12.Range("C" & f).Value = Target.Offset(, -3).Value Then
'Ha form
If WB_CDB.Sheet12.Range("A" & f).Value = Target.Offset(, 1).Value Then
WB_CDB.Sheet11.Range("F4:Y4") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F19:Y19") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F34:Y34") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F49:Y49") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F64:Y64") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F79:Y79") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F94:Y94") = WB_CDB.Sheet12.Range("E" & f & ":X" & f).Value
Exit Do
'Nang form
ElseIf WB_CDB.Sheet12.Range("B" & f).Value = Target.Offset(, 1).Value Then
WB_CDB.Sheet11.Range("G4:Z4") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G19:Z19") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G34:Z34") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G49:Z49") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G64:Z64") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G79:Z79") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
WB_CDB.Sheet11.Range("G94:Z94") = WB_CDB.Sheet12.Range("D" & f & ":W" & f).Value
Exit Do
Else
'Dung form
WB_CDB.Sheet11.Range("F4:Z4") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F19:Z19") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F34:Z34") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F49:Z49") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F64:Z64") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F79:Z79") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
WB_CDB.Sheet11.Range("F94:Z94") = WB_CDB.Sheet12.Range("D" & f & ":X" & f).Value
f = f + 1
End If
Else 'Nguoc lai thi tiep tuc ma form khac
f = f + 1
If f > DC_Fo And Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F4:Z4")) = 0 Then
MsgBox "Form chua dung: co the thua khoang trang hoac chua co", vbInformation + vbOKOnly, "Thong bao"
WB_CDB.Sheet5.Activate
Target.Offset(, -3).Activate: Exit Sub
End If
End If
Loop Until f > DC_Fo
'An sheet FORM
WB_CDB.Sheet12.Visible = xlSheetVeryHidden
'Tinh Tong Form
WB_CDB.Sheet11.Range("AA4, AA19, AA34, AA49, AA64, AA79, AA94") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F94:Z94"))
'Dien SLKH
If Dir("D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\NHAP KHO BTP-SK GO KG.xlsx") = "" Then _
MsgBox " File D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\NHAP KHO BTP-SK GO KG.xlsx khong ton tai" & _
vbCrLf & "Vui long kiem tra lai thu muc", vbInformation & vbOKOnly, "Thong bao": _
Exit Sub
'Gan file nhap vua mo vao bien
Dim WB_Nhap As Workbook
Set WB_Nhap = Workbooks.Open("D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\NHAP KHO BTP-SK GO KG.xlsx", UpdateLinks:=0) 'Mo file nhap, khong cap nhat
Windows("CAN DONG BO.xlsm").Activate
'Xoa loc
If WB_Nhap.Sheets("SLKH").AutoFilterMode Then WB_Nhap.Sheets("SLKH").AutoFilter.ShowAllData
'Dong cuoi SLKH sheet Nhap
Dim DC_SLKH As Single
DC_SLKH = WB_Nhap.Sheets("SLKH").Range("D" & Rows.CountLarge).End(xlUp).Row
'Gan vung PO SLKH
Dim PO_SLKH, PO As Range
Set PO_SLKH = WB_Nhap.Sheets("SLKH").Range("D5:D" & DC_SLKH)
For Each PO In PO_SLKH
If PO = "" Then
Else
If PO.Value = Target.Value Then
WB_CDB.Sheet11.Range("F5:V5") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W5:Z5") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F20:V20") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W20:Z20") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F35:V35") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W35:Z35") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F50:V50") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W50:Z50") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F65:V65") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W65:Z65") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F80:V80") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W80:Z80") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
WB_CDB.Sheet11.Range("F95:V95") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 5), PO.Offset(, 21)).Value
WB_CDB.Sheet11.Range("W95:Z95") = WB_Nhap.Sheets("SLKH").Range(PO.Offset(, 23), PO.Offset(, 26)).Value
Exit For
End If
End If
Next PO
'Tinh Tong SLKH
WB_CDB.Sheet11.Range("AA5, AA20, AA35, AA50, AA65, AA80, AA95") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F95:Z95"))
'Dien Thieu Ke Hoach
'Kiem tra file co ton tai khong
If Dir("D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\XUAT KHO BTP-SK GO KG.xlsx") = "" Then _
MsgBox " File D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\XUAT KHO BTP-SK GO KG.xlsx khong ton tai" & _
vbCrLf & "Vui long kiem tra lai thu muc", vbInformation & vbOKOnly, "Thong bao": _
Exit Sub
'Gan file xuat vua mo vao bien
Dim WB_Xuat As Workbook
Set WB_Xuat = Workbooks.Open("D:\NHAP - XUAT KHO BTP\NHAP - XUAT KHO BTP\XUAT KHO BTP-SK GO KG.xlsx", UpdateLinks:=0) 'Mo file xuat, khong cap nhat
Windows("CAN DONG BO.xlsm").Activate
'Xoa loc sheet Xuat Mu
If WB_Xuat.Sheets("XUAT MU").AutoFilterMode Then WB_Xuat.Sheets("XUAT MU").AutoFilter.ShowAllData
'Dong cuoi PO Xuat Mu
Dim DC_XM As Single
DC_XM = WB_Xuat.Sheets("XUAT MU").Range("B" & Rows.CountLarge).End(xlUp).Row
'Gan vung PO Xuat Mu
Dim PO_XM, XM As Range
Dim i, j As Single
Set PO_XM = WB_Xuat.Sheets("XUAT MU").Range("B8:B" & DC_XM)
If Target.Offset(, 8).Value = Target.Offset(, 5).Value Then
For j = 6 To 96 Step 15
For i = 6 To 27
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(j - 1, i)
Next i
Next j
Else
For Each XM In PO_XM
If XM = "" Then
Else
If XM.Value = Target.Value Then
For j = 6 To 96 Step 15
For i = 6 To 26
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(j - 1, i) - Application.WorksheetFunction.SumIf(PO_XM, Target, PO_XM.Offset(, i + 1))
Next i
Next j
Exit For
End If
End If
Next XM
'Tinh Tong TKH
WB_CDB.Sheet11.Range("AA6, AA21, AA36, AA51, AA66, AA81, AA96") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F96:Z96"))
End If
'Dien SLSX
If Target.Offset(, 10).Value = Target.Offset(, 8).Value Then 'Neu Tong Dong Bo Ngay = TKH Xuat thi ra lenh ket
'Dien SLSX tung size lenh ket
For j = 7 To 97 Step 15
For i = 6 To 27
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(j - 1, i).Value
Next i
Next j
'Dien tong SLSX
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Target.Offset(, 10).Value
Else 'Nguoc lai Tong DBN <> TKH Xuat thi ra lenh thuong
'Xac dinh Packing Method
Dim Str, TiLe As String, Mng, Dng, k As Single
Str = Replace(WB_CDB.Sheet11.Range("P91").Value, " ", "") 'Xoa khoan trong
Mng = InStr(Str, "(") 'Vi tri mo ngoac
Dng = InStr(Str, ")") 'Vi tri dong ngoac
If Mng > 0 And Dng > 0 Then 'Ti le size dong thung
TiLe = Mid(Str, Mng + 1, Dng - Mng - 1)
If Len(TiLe) = Application.WorksheetFunction.CountIf(WB_CDB.Sheet11.Range("F5:Z5"), ">0") Then
PA.Show 'Goi userform de nguoi dung lua chon phuong phap tinh
'Neu dong hop thoai thi thoat chuong trinh
Exit Sub
'Click Nut 2 thi dong userform va thuc hien nhung cau lenh duoi
For j = 7 To 97 Step 15
For i = 6 To 26
WB_CDB.Sheet11.Cells(j, i) = Target.Offset(, i + 5).Value
Next i
Next j
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F7:Z7"))
'Click Nut 1 thi dong userform va thuc hien nhung cau lenh duoi
If IsNumeric(TiLe) = True Then 'Trong dau () la so ti le thi lam tron
For i = 6 To 26
If WB_CDB.Sheet11.Cells(5, i).Value > 0 Then
k = k + 1
If Target.Offset(, i + 5).Value > 0 Then
WB_CDB.Sheet11.Cells(7, i) = Application.WorksheetFunction.Floor(Target.Offset(, i + 5).Value, Mid(TiLe, k, 1)) / Mid(TiLe, k, 1) 'chia ra so thung tung size
End If
End If
Next i
Dim sothung As Single
sothung = Application.WorksheetFunction.Min(WB_CDB.Sheet11.Range("F7:Z7")) 'So thung nho nhat
k = 0
For i = 6 To 26
If WB_CDB.Sheet11.Cells(5, i).Value > 0 Then
k = k + 1
WB_CDB.Sheet11.Cells(7, i) = Mid(TiLe, k, 1) * sothung
End If
Next i
'Tinh tong SLSX
WB_CDB.Sheet11.Range("AA7") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F7:Z7"))
WB_CDB.Sheet11.Range("AA8, AA23, AA38, AA53, AA68, AA83, AA98") = WB_CDB.Sheet11.Range("AA7") / Left(Str, Mng - 1)
WB_CDB.Sheet11.Range("F22:AA22") = WB_CDB.Sheet11.Range("F7:AA7").Value
WB_CDB.Sheet11.Range("F37:AA37") = WB_CDB.Sheet11.Range("F7:AA7").Value
WB_CDB.Sheet11.Range("F52:AA52") = WB_CDB.Sheet11.Range("F7:AA7").Value
WB_CDB.Sheet11.Range("F67:AA67") = WB_CDB.Sheet11.Range("F7:AA7").Value
WB_CDB.Sheet11.Range("F82:AA82") = WB_CDB.Sheet11.Range("F7:AA7").Value
WB_CDB.Sheet11.Range("F97:AA97") = WB_CDB.Sheet11.Range("F7:AA7").Value
Else 'Nguoc lai trong dau ngoac khong phai la so ti le ma la chuoi thi khong can lam trong chi chan nhap so luong
For j = 7 To 97 Step 15
For i = 6 To 26
If Target.Offset(, i + 5).Value > 0 Then
WB_CDB.Sheet11.Cells(j, i) = Target.Offset(, i + 5).Value
End If
Next i
Next j
'Dien tong SLSX
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F97:Z97"))
End If
Else
MsgBox "Packing Method khong dung voi so luong size ke hoach", vbInformation + vbOKOnly, "Thong bao"
WB_CDB.Sheet5.Activate
Target.Offset(, 6).Activate: Exit Sub
End If
ElseIf Mng > 0 And Dng = 0 Then 'Thieu dong ngoac kiem tra du lieu
MsgBox "Packing Method sai hoac thieu )", vbInformation + vbOKOnly, "Thong bao"
WB_CDB.Sheet5.Activate
Target.Offset(, 6).Activate: Exit Sub
ElseIf Mng = 0 And Dng > 0 Then 'Thieu mo ngoac kiem tra du lieu
MsgBox "Packing Method sai hoac thieu )", vbInformation + vbOKOnly, "Thong bao"
WB_CDB.Sheet5.Activate
Target.Offset(, 6).Activate: Exit Sub
ElseIf Mng = 0 And Dng = 0 Then 'Khong co ngoac co the la size run hoac ti le dong thung lon Cosco
If IsNumeric(Str) = True Then 'Neu khong co ngoac va la so thi size run => lam tron so
For j = 7 To 97 Step 15
For i = 6 To 26
If Target.Offset(, i + 5).Value > 0 Then
WB_CDB.Sheet11.Cells(j, i) = Application.WorksheetFunction.Floor(Target.Offset(, i + 5).Value, Str) 'Lam tron
WB_CDB.Sheet11.Cells(j + 1, i) = WB_CDB.Sheet11.Cells(j, i) / Str 'Chia thung
End If
Next i
Next j
'Dien tong SLSX
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F97:Z97")) 'Tong SLSX
WB_CDB.Sheet11.Range("AA8, AA23, AA38, AA53, AA68, AA83, AA98") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F98:Z98")) 'Tong so thung
Else 'Nguoc lai khong dong ngoac va la chuoi kieu cosco => nhap so khong can lam tron
For j = 7 To 97 Step 15
For i = 6 To 26
If Target.Offset(, i + 5).Value > 0 Then
WB_CDB.Sheet11.Cells(j, i) = Target.Offset(, i + 5).Value
End If
Next i
Next j
'Dien tong SLSX
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F97:Z97"))
End If
End If
End If
'Chuan bi chia vong form
If WB_CDB.Sheet11.Range("AA97").Value >= 250 Then 'Neu SLSX >= 250 thi chia vong form
Dim r, Vf, d As Integer
r = 250
Do
If WB_CDB.Sheet11.Range("AA97").Value Mod r = 0 Then 'Neu tong SLSX chia het cho 250 thi
Vf = WB_CDB.Sheet11.Range("AA97").Value / r 'Xac dinh so vong form
r = r + 1 'Tiep tuc chia de tim vong form co so lon nhat
Else 'Nguoc lai neu chia du thi them 1 roi chia lai
r = r + 1
End If
Loop Until r = 500 'Cho den khi r = 280 thi thoi, se thay the = quan so * PPH se chinh xac hon
'Chia vong form
For j = 99 To 98 + Vf
WB_CDB.Sheet11.Cells(j, 5) = "Vf" & j - 98 'Dien Vf
For i = 6 To 26
'Neu SLSX > 0 thi
If WB_CDB.Sheet11.Cells(97, i).Value > 0 Then
'Neu SLSX chi vf co du thi
If WB_CDB.Sheet11.Cells(97, i).Value Mod Vf > 0 Then 'Tinh so du
If (WB_CDB.Sheet11.Cells(97, i).Value \ Vf) * Vf + j - 98 <= WB_CDB.Sheet11.Cells(97, i).Value Then 'Neu sodu < so du
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(97, i).Value \ Vf + 1 'Thi chia lay phan nguyen +1
Else 'Cho den khi sodu = so du thi khong cong nua
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(97, i).Value \ Vf
End If
Else 'Nguoc lai khong du thi chia deu
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(97, i).Value / Vf
End If
End If
Next i
Next j
Else
WB_CDB.Sheet11.Cells(99, 5) = "Vf1"
For i = 6 To 26
WB_CDB.Sheet11.Cells(99, i) = WB_CDB.Sheet11.Cells(97, i).Value
Next i
End If
'Kiem tra co vuot so form khong neu co thi chia lai size do
Dim solech As Single
For i = 6 To 26
If WB_CDB.Sheet11.Cells(99, i).Value > WB_CDB.Sheet11.Cells(94, i).Value Then
If WB_CDB.Sheet11.Cells(97, i).Value Mod WB_CDB.Sheet11.Cells(94, i).Value = 0 Then
Vf = WB_CDB.Sheet11.Cells(97, i).Value / WB_CDB.Sheet11.Cells(94, i).Value
For j = 99 To 99 + Vf
WB_CDB.Sheet11.Cells(j, 5) = "Vf" & j - 98
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(94, i).Value
Next j
Else
Vf = WB_CDB.Sheet11.Cells(97, i).Value \ WB_CDB.Sheet11.Cells(94, i).Value
For j = 99 To 98 + Vf
WB_CDB.Sheet11.Cells(j, 5) = "Vf" & j - 98
WB_CDB.Sheet11.Cells(j, i) = WB_CDB.Sheet11.Cells(94, i).Value
Next j
WB_CDB.Sheet11.Cells(j, 5) = "Vf" & j - 98
WB_CDB.Sheet11.Cells(99 + Vf, i).Value = WB_CDB.Sheet11.Cells(97, i).Value - Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range(WB_CDB.Sheet11.Cells(99, i), WB_CDB.Sheet11.Cells(98 + Vf, i)))
End If
End If
Next i
'Tong so form tung vong
Dim DC_VF As Single
DC_VF = WB_CDB.Sheet11.Range("E" & Rows.CountLarge).End(xlUp).Row
For j = 99 To DC_VF
WB_CDB.Sheet11.Range("AA" & j) = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F" & j & ":Z" & j))
Next j
'Xoa bot dong
If DC_VF > 106 Then
For j = 101 To DC_VF
If WB_CDB.Sheet11.Range("AA" & j).Value < WB_CDB.Sheet11.Range("AA99").Value Then
WB_CDB.Sheet11.Range("E" & j - 1) = "Vf..."
For i = 6 To 27
If WB_CDB.Sheet11.Cells(j - 1, i) > 0 Then WB_CDB.Sheet11.Cells(j - 1, i) = "....."
Next i
If j - (DC_VF - 105) >= 101 Then
WB_CDB.Sheet11.Range("E" & j - 1 & ":AA" & DC_VF).Copy
WB_CDB.Sheet11.Range("E" & j - (DC_VF - 105)).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Else
WB_CDB.Sheet11.Range("E" & DC_VF - (106 - j) & ":AA" & DC_VF).Copy
WB_CDB.Sheet11.Range("E" & j).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If
WB_CDB.Sheet11.Range("E107: AA" & DC_VF).ClearContents
Exit For
Else
WB_CDB.Sheet11.Range("E102") = "Vf..."
For i = 6 To 27
If WB_CDB.Sheet11.Cells(102, i) > 0 Then WB_CDB.Sheet11.Cells(102, i) = "....."
Next i
WB_CDB.Sheet11.Range("E" & DC_VF - 3 & ":AA" & DC_VF).Copy
WB_CDB.Sheet11.Range("E103").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
WB_CDB.Sheet11.Range("E107: AA" & DC_VF).ClearContents
Exit For
End If
Next j
End If
'NOTE KET
If WB_CDB.Sheet11.Range("AA95").Value = WB_CDB.Sheet11.Range("AA96").Value And WB_CDB.Sheet11.Range("AA95").Value = WB_CDB.Sheet11.Range("AA97").Value Then
WB_CDB.Sheet11.Range("AB5, AB20, AB35, AB50, AB65, AB80, AB95") = "K" & ChrW(7870) & "T PO M" & ChrW(7898) & "I" 'KET PO MOI
Else
If WB_CDB.Sheet11.Range("AA95").Value = WB_CDB.Sheet11.Range("AA96").Value Then
WB_CDB.Sheet11.Range("AB5, AB20, AB35, AB50, AB65, AB80, AB95") = "PO M" & ChrW(7898) & "I - K" & ChrW(7870) & "T " & WB_CDB.Sheet11.Range("AA97").Value & "**" 'PO MOI - KET
ElseIf WB_CDB.Sheet11.Range("AA96").Value = WB_CDB.Sheet11.Range("AA97").Value Then
WB_CDB.Sheet11.Range("AB5, AB20, AB35, AB50, AB65, AB80, AB95") = "K" & ChrW(7870) & "T PO" 'KET PO
Else
WB_CDB.Sheet11.Range("AB5, AB20, AB35, AB50, AB65, AB80, AB95") = "K" & ChrW(7870) & "T " & WB_CDB.Sheet11.Range("AA97").Value & "**" 'KET
End If
End If
'To mau & active sheet Lenh San Xuat
With Target.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 13434828
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Else
Exit Sub
End If
End If
WB_CDB.Sheet11.Activate
WB_CDB.Sheet11.Range("A91").Activate
End Sub
Chào bạn ở đây bạn đang dùng trên sheet mà có phải là from đâu
Thì trên sheet trong sự kiện đó tôi gọi ra 1 userform ra để tương tác với người dùng
Chào bạn câu lệnh gọi from chỉ đơn giản là
sub goifom
tenfrom.show
end sub
gọi from thì tôi biết rồi nhưng phần sau trong in đậm của code ở phần trên đó tôi chưa giải được nhờ Gitiho hỗ trợ giúp tôi ở phần đó
Xin cảm ơn
PA.Show 'Goi userform de nguoi dung lua chon phuong phap tinh
'Neu dong hop thoai thi thoat chuong trinh
Exit Sub
'Click Nut 2 thi dong userform va thuc hien nhung cau lenh duoi
For j = 7 To 97 Step 15
For i = 6 To 26
WB_CDB.Sheet11.Cells(j, i) = Target.Offset(, i + 5).Value
Next i
Next j
WB_CDB.Sheet11.Range("AA7, AA22, AA37, AA52, AA67, AA82, AA97") = Application.WorksheetFunction.Sum(WB_CDB.Sheet11.Range("F7:Z7"))
'Click Nut 1 thi dong userform va thuc hien nhung cau lenh duoi
If IsNumeric(TiLe) = True Then 'Trong dau () la so ti le thi lam tron
For i = 6 To 26
If WB_CDB.Sheet11.Cells(5, i).Value > 0 Then
k = k + 1
If Target.Offset(, i + 5).Value > 0 Then
WB_CDB.Sheet11.Cells(7, i) = Application.WorksheetFunction.Floor(Target.Offset(, i + 5).Value, Mid(TiLe, k, 1)) / Mid(TiLe, k, 1) 'chia ra so thung tung size
End If
End If
Chào bạn với nút bấm nào thì bạn gán cho nó sự kiện đó là xong nhé.
gán sao Gitiho tôi chưa hiểu lắm. Ở đoạn code trên nhờ Gitiho điền vào giúp tôi để tôi hiểu hơn
Tôi xin nói lại để Gitiho hiểu rõ hơn là ý của tôi muốn như thế này:
trong code sự kiện Double_Click của sheet1. Khi tôi doubleclick trong sheet 1 thì sẽ hiện lên một userform thông báo cho tôi có 2 comanbutton. Nếu tôi click comanbutton 1 thì biến a trong private sub double_Click, a= 1 còn tôi click comanbutton 2 thì biến a = 2, nếu tôi click vào dấu x đóng userform thì exit sub.
Gitiho không cần phải xem nội dung của code trên tôi miêu tả vậy cho nó đơn giản, tôi chỉ đang gặp khó khăn ở chỗ lựa chọn của người dùng thôi à
1. Khi tôi doubleclick trong sheet 1 thì sẽ hiện lên một userform:
Bạn lập trình sự kiện trong Sheet, cụ thể là sự kiện BeforeDoubleClick.
Trong đoạn code bạn đặt lệnh Userform.Show là được
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
UserForm1.Show
End Sub
2. Nếu tôi click comanbutton 1 thì biến a trong private sub double_Click, a= 1 còn tôi click comanbutton 2 thì biến a = 2, nếu tôi click vào dấu x đóng userform thì exit sub
Cái này bạn phải lập trình trong Userform.
Khi double_click thì biến a = 1, tức là trong sự kiện Userform_Initialize khi userform mở lên sẽ xác định sẵn giá trị a = 1
Private Sub UserForm_Initialize()
Dim a As Long
a = 1
End Sub
Khi click và nút bấm command button thì a thay đổi giá trị = 2 bạn cần lập trình cho nút này
Private Sub CommandButton1_Click()
a = 2
End Sub
Khi bấm vào nút dấu x thì đóng userform (nút dấu x này được hiểu là 1 command button khác)
Private Sub CommandButton2_Click()
Unload Me
End Sub
Câu lệnh là Unload me chứ không phải exit sub nhé, mục đích là đóng Userform hướng dẫn này.
cảm ơn gitiho
sau khi biến a có giá trị làm sao tôi sử dụng giá trị a đó trong sub sự kiện double_click, và sau khi unload me sub sự kiện double_click của tôi vẫn chưa exit sub hả Gitiho
Tôi còn vướng chỗ này
Chào bạn Unload Me là sự kiện khi bạn click thì nó tự động đóng form bạn nhé