Có được dùng 2 sự kiện Worksheet_Change trong một sheet không? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thanhsangnguyen1982

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
21/12/10
Bài viết
875
Được thích
499
Nghề nghiệp
Accounting - Auditing
Cho mình hỏi: trong 1 sheet không thể dùng 2 sự kiện Worksheet_Change được ah??????

Private Sub Worksheet_Change(ByVal Target As Range)
.......................
End sub
________________________________________
Private Sub Worksheet_Change1(ByVal Target As Range)
Dim clls1 As Range, clls2 As Range
Application.ScreenUpdating = False
On Error Resume Next
If Target.Column = 12 Then
Set clls1 = Cells(Target.Row, 12)
Set clls2 = Cells(Target.Row, 13)
With clls1
.Copy
End With
With clls2
.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
 
Cho mình hỏi: trong 1 sheet không thể dùng 2 sự kiện Worksheet_Change được ah??????

Private Sub Worksheet_Change(ByVal Target As Range)
.......................
End sub
________________________________________
Private Sub Worksheet_Change1(ByVal Target As Range)
Dim clls1 As Range, clls2 As Range
Application.ScreenUpdating = False
On Error Resume Next
If Target.Column = 12 Then
Set clls1 = Cells(Target.Row, 12)
Set clls2 = Cells(Target.Row, 13)
With clls1
.Copy
End With
With clls2
.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Dùng được nhưng không phải chia thành 2 sub như vậy
Cú pháp chung là
Mã:
Private Sub Worksheet_Change1(ByVal Target As Range)
  If [COLOR=#0000cd][B]điều kiện của sự kiện 1[/B][/COLOR] then
    'Chạy code sự kiện 1
  ElseIf [COLOR=#0000cd][B]điều kiện của sự kiện 2 [/B][/COLOR]then
    'Chạy code sự kiện 2
  End If
End Sub
 
Upvote 0
anh nối 2 sự kiện này lại với nhau giúp e với nhé!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TenCV, Dulieu, Ketqua, KQCV, i As Long, K As Long, H As Long
Dim Ivl As Long, Inc As Long, Imay As Long
Dim VL As String, NC As String, May As String, LaMa As Long
Dim Ma As String, Mahieu As String
Dim iTen_CV As Long

VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u" ' vat lieu : De tra cuu ben CSDL CM
NC = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng" ' Nhan cong : De tra cuu ben CSDL DM
May = "M" & ChrW$(225) & "y" ' May : De tra cuu ben CSDL DM
On Error Resume Next

If Not Intersect(Target, [B7:B10000]) Is Nothing Then
If Target.Count = 1 Then
Mahieu = Sheets("XuatDL").Range("B" & Target.Row) ' MAHIEU o day la MHCV trong cot B ma ta nhap vao

With Sheets("CSDL TenCV")
TenCV = .Range("A5", .Range("B65535").End(3)).Resize(, 3) ' DL TenCV o B5 den cot D... trong sheet CSDL TenCV
End With

ReDim KQCV(1 To UBound(TenCV), 1 To 3) ' Khai bao mang KQCV la mang 1 dong 3 cot

With Sheets("CSDL DM")
Dulieu = .Range("B5", .Range("B65535").End(3)).Resize(, 6) ' DL dinh muc tu o B5 den G...
End With
ReDim Ketqua(1 To UBound(Dulieu), 1 To 6) ' Mang KETQUA co so dong cua DULIEU va So COT = 6

For i = 1 To UBound(Dulieu)

Ma = Dulieu(i, 1) ' Ma = Ma hieu cong viec o cot 1 cua Mang DuLieu trong CSDL DINH MUC

If Ma = Mahieu Then

For iTen_CV = 1 To UBound(TenCV)
If TenCV(iTen_CV, 1) = Mahieu Then
'KQCV(1, 1) = "=VLOOKUP(RC[-2],'CSDL tenCV'!R5C2:R1800C4,2,0)" ' Tim ten CV trong CSDL tenCV

'KQCV(1, 2) = "=VLOOKUP(RC[-3],'CSDL tenCV'!R5C2:R1800C4,3,0)" ' Tim DVT cua cong viec trong CSDL tenCV

'KQCV(1, 3) = 1 ' Gan Khoi luong = 1

KQCV(1, 1) = TenCV(iTen_CV, 2)
KQCV(1, 2) = TenCV(iTen_CV, 3)
KQCV(1, 3) = 1
Exit For
End If
Next iTen_CV

K = K + 1 ' Bien K la bien chay trong mang KET QUA

If K >= 1 Then ' Neu K > 1 thi gan gia tri cho mang KET QUA tu mang Du Lieu
'J = I - 1 ' Phai giam bien chay I xuong 1 don vi vi thieu 1 dong
If Dulieu(i, 4) = VL Then ' Neu cot so 4 cua sheet CSDL DM la VAT LIEU thi lam ....
Ivl = Ivl + 1
If Ivl = 1 Then
Ketqua(K, 2) = ChrW(97) & ".) " & VL ' Danh chu a). Vat Lieu
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If

If Dulieu(i, 4) = NC Then
Inc = Inc + 1
If Inc = 1 Then
Ketqua(K, 2) = ChrW(98) & ".) " & NC ' Danh chu b). Nhan Cong
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If

If Dulieu(i, 4) = May Then
Imay = Imay + 1
If Imay = 1 Then
Ketqua(K, 2) = ChrW(99) & ".) " & May ' Danh chu c). May
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If
'I = I + 1

End If ' Ket thuc khi K = 1 hoac la K > 1
End If ' Ket thuc khi MA = MA HIEU
Next i
If K Then
Target.Offset(, 2).Resize(1, 3) = KQCV
Target.Offset(1, 1).Resize(K, 5) = Ketqua

With Range("A" & Target.Row & ":J" & Target.Row).Resize(K + 1)
.Borders.LineStyle = 1
.Borders(xlInsideHorizontal).Weight = xlHairline

End With
With Range("A" & Target.Row & ":E" & Target.Row).Resize(K + 1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Range("D" & Target.Row).Resize(K + 1)
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Else
MsgBox "Khong tim thay"
End If
End If
End If
End Sub
............................................................................................
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Intersect(Target, [A4:A65536]) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Cll In Intersect(Target, [A4:A65536]).Cells
If Not Cll.HasFormula And Cll.Value <> "" Then Cll.Value = UCase(Cll.Value)
Next
Application.EnableEvents = True
End Sub
 
Upvote 0
anh nối 2 sự kiện này lại với nhau giúp e với nhé!

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TenCV, Dulieu, Ketqua, KQCV, i As Long, K As Long, H As Long
Dim Ivl As Long, Inc As Long, Imay As Long
Dim VL As String, NC As String, May As String, LaMa As Long
Dim Ma As String, Mahieu As String
Dim iTen_CV As Long

VL = "V" & ChrW$(7853) & "t li" & ChrW$(7879) & "u" ' vat lieu : De tra cuu ben CSDL CM
NC = "Nh" & ChrW$(226) & "n c" & ChrW$(244) & "ng" ' Nhan cong : De tra cuu ben CSDL DM
May = "M" & ChrW$(225) & "y" ' May : De tra cuu ben CSDL DM
On Error Resume Next

If Not Intersect(Target, [B7:B10000]) Is Nothing Then
If Target.Count = 1 Then
Mahieu = Sheets("XuatDL").Range("B" & Target.Row) ' MAHIEU o day la MHCV trong cot B ma ta nhap vao

With Sheets("CSDL TenCV")
TenCV = .Range("A5", .Range("B65535").End(3)).Resize(, 3) ' DL TenCV o B5 den cot D... trong sheet CSDL TenCV
End With

ReDim KQCV(1 To UBound(TenCV), 1 To 3) ' Khai bao mang KQCV la mang 1 dong 3 cot

With Sheets("CSDL DM")
Dulieu = .Range("B5", .Range("B65535").End(3)).Resize(, 6) ' DL dinh muc tu o B5 den G...
End With
ReDim Ketqua(1 To UBound(Dulieu), 1 To 6) ' Mang KETQUA co so dong cua DULIEU va So COT = 6

For i = 1 To UBound(Dulieu)

Ma = Dulieu(i, 1) ' Ma = Ma hieu cong viec o cot 1 cua Mang DuLieu trong CSDL DINH MUC

If Ma = Mahieu Then

For iTen_CV = 1 To UBound(TenCV)
If TenCV(iTen_CV, 1) = Mahieu Then
'KQCV(1, 1) = "=VLOOKUP(RC[-2],'CSDL tenCV'!R5C2:R1800C4,2,0)" ' Tim ten CV trong CSDL tenCV

'KQCV(1, 2) = "=VLOOKUP(RC[-3],'CSDL tenCV'!R5C2:R1800C4,3,0)" ' Tim DVT cua cong viec trong CSDL tenCV

'KQCV(1, 3) = 1 ' Gan Khoi luong = 1

KQCV(1, 1) = TenCV(iTen_CV, 2)
KQCV(1, 2) = TenCV(iTen_CV, 3)
KQCV(1, 3) = 1
Exit For
End If
Next iTen_CV

K = K + 1 ' Bien K la bien chay trong mang KET QUA

If K >= 1 Then ' Neu K > 1 thi gan gia tri cho mang KET QUA tu mang Du Lieu
'J = I - 1 ' Phai giam bien chay I xuong 1 don vi vi thieu 1 dong
If Dulieu(i, 4) = VL Then ' Neu cot so 4 cua sheet CSDL DM la VAT LIEU thi lam ....
Ivl = Ivl + 1
If Ivl = 1 Then
Ketqua(K, 2) = ChrW(97) & ".) " & VL ' Danh chu a). Vat Lieu
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If

If Dulieu(i, 4) = NC Then
Inc = Inc + 1
If Inc = 1 Then
Ketqua(K, 2) = ChrW(98) & ".) " & NC ' Danh chu b). Nhan Cong
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If

If Dulieu(i, 4) = May Then
Imay = Imay + 1
If Imay = 1 Then
Ketqua(K, 2) = ChrW(99) & ".) " & May ' Danh chu c). May
K = K + 1
End If
Ketqua(K, 1) = Dulieu(i, 2): Ketqua(K, 2) = Dulieu(i, 5): Ketqua(K, 5) = Dulieu(i, 3): Ketqua(K, 3) = Dulieu(i, 6)
End If
'I = I + 1

End If ' Ket thuc khi K = 1 hoac la K > 1
End If ' Ket thuc khi MA = MA HIEU
Next i
If K Then
Target.Offset(, 2).Resize(1, 3) = KQCV
Target.Offset(1, 1).Resize(K, 5) = Ketqua

With Range("A" & Target.Row & ":J" & Target.Row).Resize(K + 1)
.Borders.LineStyle = 1
.Borders(xlInsideHorizontal).Weight = xlHairline

End With
With Range("A" & Target.Row & ":E" & Target.Row).Resize(K + 1)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Range("D" & Target.Row).Resize(K + 1)
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Else
MsgBox "Khong tim thay"
End If
End If
End If
End Sub
............................................................................................
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range
If Intersect(Target, [A4:A65536]) Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Cll In Intersect(Target, [A4:A65536]).Cells
If Not Cll.HasFormula And Cll.Value <> "" Then Cll.Value = UCase(Cll.Value)
Next
Application.EnableEvents = True
End Sub
Đổi tên cái đầu là Thutuc1, cái2 là thuctuc2. sau đó tạo sự kiện change mới cho worksheet trong đó viết

thutuc1 target
thutuc2 target
 
Upvote 0
Web KT

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

Back
Top Bottom