Worksheet_change thay đổi không đúng với range được gán (1 người xem)

  • Thread starter Thread starter hic1802
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hic1802

Thành viên tiêu biểu
Tham gia
16/2/13
Bài viết
545
Được thích
34
Giới tính
Nam
Chào mọi người trên GPE,
Em có viết 1 đoạn code lấy nguồn từ trên diễn đàn mình để phục vụ công việc
Yêu cầu của e là chỉ khi cột E trong sheet "NhapLieu" có dữ liệu (<>"") thì mới chạy các công thức trên các ô đã được quy định trên bảng "NhapLieu"
Tuy nhiên e thấy khi ta thay đổi các cột phía trước E (A,B,C,D) thì đều chạy lệnh Worksheet_change
Nhờ mọi người chỉ cách khắc phục.
code
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngA As Range
Dim rngTempA As Range
On Error GoTo Loi
    Set rngA = Application.Intersect(Me.Range("E700", Me.Cells(Me.Rows.Count, 1)), Target)
    If rngA Is Nothing Then GoTo Thoat 'vung khong lien quan
    
    For Each rngTempA In rngA.Areas
        With rngTempA
            .Offset(, 12).FormulaR1C1 = "=RC[15]"
            .Offset(, 13).FormulaR1C1 = "=RC[12]&RC[16]&RC[19]"
            .Offset(, 14).FormulaR1C1 = "=RC[12]&RC[16]&RC[19]"
            .Offset(, 15).FormulaR1C1 = "=RC[16]&RC[19]"
            .Offset(, 24).FormulaR1C1 = "=IFERROR(RC[-28]&RC[-27]&RC[-24]&RC[-21]&DAY(SUBSTITUTE(RC[-25],""//"",""/""))&MONTH(SUBSTITUTE(RC[-25],""//"",""/""))&YEAR(SUBSTITUTE(RC[-25],""//"",""/"")),"""")"
            .Offset(, 25).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_TD'!R3C11:R99999C14,2,0),"""")"
            .Offset(, 26).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_TD'!R3C11:R99999C14,3,0),"""")"
            .Offset(, 27).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_TD'!R3C11:R99999C14,4,0),"""")"
            .Offset(, 28).FormulaR1C1 = "=IFERROR(RC[-28]&RC[-25]&DAY(SUBSTITUTE(RC[-29],""//"",""/""))&MONTH(SUBSTITUTE(RC[-29],""//"",""/""))&YEAR(SUBSTITUTE(RC[-29],""//"",""/"")),"""")"
            .Offset(, 29).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_CD'!R4C[-6]:R99999C[-4],2,0),"""")"
            .Offset(, 30).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_CD'!R4C[-6]:R99999C[-4],3,0),"""")"
            .Offset(, 32).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-4],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_XLN'!R3C9:R99999C12,2,0),"""")"
            .Offset(, 33).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-5],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_XLN'!R3C9:R99999C12,3,0),"""")"
            .Offset(, 34).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-6],'\\192.168.14.6\Honglam2018\SanXuat\11.HSGS\SB_SC_2017\MUT_DEO\2018\SaBan\[BangCongNhan.xlsm]DATA_XLN'!R3C9:R99999C12,4,0),"""")"
            
        End With
    Next
Thoat:
    Set rngA = Nothing
    
    Set rngTempA = Nothing
    Exit Sub
Loi:
    MsgBox Err.Description
    Resume Thoat
End Sub
 

File đính kèm

Bạn phải đặt lệnh giới hạn vùng đã chứ: if target.column=5 then. Nếu bạn muốn thực thi lệnh từ dòng nào thì lồng thêm điều kiện dòng. Tóm lại là lồng 3 cái if vào nhau như thế này, giả định chỉ cho thực thi từ dòng số 4 trở đi.
if target.row>3 then
if target.column=5 then
if target.value<>"" then

<vùng lệnh mà bạn muốn thực thi>

end if
end if
end if
 
Upvote 0
Bạn phải đặt lệnh giới hạn vùng đã chứ: if target.column=5 then. Nếu bạn muốn thực thi lệnh từ dòng nào thì lồng thêm điều kiện dòng. Tóm lại là lồng 3 cái if vào nhau như thế này, giả định chỉ cho thực thi từ dòng số 4 trở đi.
if target.row>3 then
if target.column=5 then
if target.value<>"" then

<vùng lệnh mà bạn muốn thực thi>

end if
end if
end if
Cảm ơn bác đã chỉ bảo, e đã làm được rồi.
 
Upvote 0
Web KT

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

Back
Top Bottom