Chuyên mục xử lý, gỡ rối code VBA

Liên hệ QC
Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,930
Vậy sửa lại thế này xem sao.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If [D1] = 0 Then
              CommandButton1.Visible = False
Else
              CommandButton1.Visible = True
End If
If [G1] = 0 Then
             CommandButton2.Visible = False
Else
             CommandButton2.Visible = True
End If
End Sub

CommandButton1.Visible = CBool([D1]) , hoặc là
CommandButton1.Visible = ([D1] <> 0)
 
Upvote 0
CommandButton1.Visible = CBool([D1]) , hoặc là
CommandButton1.Visible = ([D1] <> 0)
Code của bạn ngắn gọn ,chạy Ok ,Nhưng nếu 2 nút CommandButton mà dùng chung một điều kiện tại D1 ,Tức là khi tại D1 có dữ liệu thì
CommandButton1 sẽ ẨN và CommandButton2 sẽ HIỆN ....Nên sửa Code lại như thế nào ?
 
Upvote 0
Code của bạn ngắn gọn ,chạy Ok ,Nhưng nếu 2 nút CommandButton mà dùng chung một điều kiện tại D1 ,Tức là khi tại D1 có dữ liệu thì
CommandButton1 sẽ ẨN và CommandButton2 sẽ HIỆN ....Nên sửa Code lại như thế nào ?

CommandButton1.Visible = ([D1] <> 0)
CommandButton2.Visible = Not CommandButton1.Visible
 
Upvote 0
Nhờ AE chỉnh sửa hoặc thêm code (code này mình tìm được trên diền đàn)
1. Hiện tại code không lấy được dữ liệu bên sheet CSDL DM ở cột D nếu có dấu = ở trước.
2. Nếu bổ dầu bằng thì lấy được dữ liệu nhưng ở cột G lại thiếu dấu = để chạy công thức. nhờ ae xem giúp.
 

File đính kèm

  • HOI CODE.xls
    4.2 MB · Đọc: 12
Upvote 0
Nhờ AE chỉnh sửa hoặc thêm code (code này mình tìm được trên diền đàn)
1. Hiện tại code không lấy được dữ liệu bên sheet CSDL DM ở cột D nếu có dấu = ở trước.
2. Nếu bổ dầu bằng thì lấy được dữ liệu nhưng ở cột G lại thiếu dấu = để chạy công thức. nhờ ae xem giúp.
Bạn lấy dạng Range("xxx").Formula xem sao
Mình thử với ô G9 của Sheets("xuatDL")
PHP:
Sub Thu()
    With Sheets("xuatDL")
        MsgBox .Range("G9").Formula
    End With
End Sub
 
Upvote 0
Anh(chị) cho em hỏi, em có 1000 dòng trong sheet 1 và sheet2 để nhập sang sheet 3, nhưng có một số dữ liệu trùng lặp giữa sheet 1 và sheet 2 em không muốn nhập thì có hàm nào là bỏ qua các dữ liệu trung lặp không ạ. Em cảm ơn.
 
Upvote 0
Anh(chị) cho em hỏi, em có 1000 dòng trong sheet 1 và sheet2 để nhập sang sheet 3, nhưng có một số dữ liệu trùng lặp giữa sheet 1 và sheet 2 em không muốn nhập thì có hàm nào là bỏ qua các dữ liệu trung lặp không ạ. Em cảm ơn.
Xét trùng trong 1 cột hay trùng bao nhiêu cột mới coi là trùng?
Bạn đưa file ví dụ lên, mỗi sheet vài chục dòng có trùng và không trùng, tạo mẫu bảng kết quả muốn có cho mọi người hiểu bạn muốn gì.
 
Upvote 0
Xét trùng trong 1 cột hay trùng bao nhiêu cột mới coi là trùng?
Bạn đưa file ví dụ lên, mỗi sheet vài chục dòng có trùng và không trùng, tạo mẫu bảng kết quả muốn có cho mọi người hiểu bạn muốn gì.
Dữ liệu được thêm vào sheet TonVatTu, lấy dữ liệu từ 3 sheet BTP1, Son_PX1, Son_cty. Dữ liệu trong sheet Son_PX1 trùng mã vật tư với sheet BTP1 và cột Sơn tím thuộc sheet Son_PX1 trùng với cột BTP2.7S1 trong sheet BTP1 thì sẽ lấy dữ liệu trong sheet Son_PX1. Tương tự trong sheet Son_cty nếu trùng như thế thì sẽ lấy dữ liệu trong sheet Son_cty và bỏ qua dữ liệu trong sheet BTP1 ạ.

PHP:
 ' LAY SO LIEU SHEET BTP1
 wsBTP1.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaBeMat = "_"
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMat

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                MaKho = Cells(csHangTieuDe, rgDuLieu.Column())

                Call DieuChinhMa(MaVatTu, "", MaKho, MaVatTuDC, "", MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang BTP1, kiem tra lai ma " & MaVatTu & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If
            End If
NextC1:
    Next C
NextH1:
    Next H

     ' LAY SO LIEU SHEET Son_Cty
         
    wsSonMaCty.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                ' DOI TEN BE MAT SANG MA BE MAT
                MaBeMat = WorksheetFunction.VLookup(Cells(csHangTieuDe, rgDuLieu.Column()), tblMaBeMatChiTiet, 2, 0)
                MaKho = csMaKhoSonCty

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                Call DieuChinhMa(MaVatTu, MaBeMat, MaKho, MaVatTuDC, MaBeMatDC, MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMatDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang Son_Cty, kiem tra lai ma " & MaVatTu & "-" & MaBeMat & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If

            End If
NextC3:
    Next C
NextH3:
    Next H


    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' LAY SO LIEU SHEET Son_PX1   
    wsSonMaPX1.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                ' DOI TEN BE MAT SANG MA BE MAT
                MaBeMat = WorksheetFunction.VLookup(Cells(csHangTieuDe, rgDuLieu.Column()), tblMaBeMatChiTiet, 2, 0)
                MaKho = csMaKhoSonPX1

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                Call DieuChinhMa(MaVatTu, MaBeMat, MaKho, MaVatTuDC, MaBeMatDC, MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMatDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang Son_PX1, kiem tra lai ma " & MaVatTu & "-" & MaBeMat & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If

            End If
NextC4:
    Next C
NextH4:
    Next H
 

File đính kèm

  • Loc.xlsx
    59.2 KB · Đọc: 4
Upvote 0
Nhờ AE chỉnh sửa hoặc thêm code (code này mình tìm được trên diền đàn)
1. Hiện tại code không lấy được dữ liệu bên sheet CSDL DM ở cột D nếu có dấu = ở trước.
2. Nếu bổ dầu bằng thì lấy được dữ liệu nhưng ở cột G lại thiếu dấu = để chạy công thức. nhờ ae xem giúp.
Có ai không?
 
Upvote 0
Dữ liệu được thêm vào sheet TonVatTu, lấy dữ liệu từ 3 sheet BTP1, Son_PX1, Son_cty. Dữ liệu trong sheet Son_PX1 trùng mã vật tư với sheet BTP1 và cột Sơn tím thuộc sheet Son_PX1 trùng với cột BTP2.7S1 trong sheet BTP1 thì sẽ lấy dữ liệu trong sheet Son_PX1. Tương tự trong sheet Son_cty nếu trùng như thế thì sẽ lấy dữ liệu trong sheet Son_cty và bỏ qua dữ liệu trong sheet BTP1 ạ.

PHP:
 ' LAY SO LIEU SHEET BTP1
 wsBTP1.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaBeMat = "_"
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMat

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                MaKho = Cells(csHangTieuDe, rgDuLieu.Column())

                Call DieuChinhMa(MaVatTu, "", MaKho, MaVatTuDC, "", MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang BTP1, kiem tra lai ma " & MaVatTu & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If
            End If
NextC1:
    Next C
NextH1:
    Next H

     ' LAY SO LIEU SHEET Son_Cty
      
    wsSonMaCty.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                ' DOI TEN BE MAT SANG MA BE MAT
                MaBeMat = WorksheetFunction.VLookup(Cells(csHangTieuDe, rgDuLieu.Column()), tblMaBeMatChiTiet, 2, 0)
                MaKho = csMaKhoSonCty

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                Call DieuChinhMa(MaVatTu, MaBeMat, MaKho, MaVatTuDC, MaBeMatDC, MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMatDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang Son_Cty, kiem tra lai ma " & MaVatTu & "-" & MaBeMat & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If

            End If
NextC3:
    Next C
NextH3:
    Next H


    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' LAY SO LIEU SHEET Son_PX1
    wsSonMaPX1.Select
    Cells(csHangTieuDe, csCotMaVatTu).End(xlDown).Select
    intSoLuongHang = ActiveCell.Row - csHangTieuDe

    Cells(csHangTieuDe, csCotBatDauChuyen).End(xlToRight).Select
    intSoLuongCot = ActiveCell.Column - csCotBatDauChuyen + 1

    For H = 0 To intSoLuongHang - 1
        For C = 0 To intSoLuongCot - 1

            Set rgDuLieu = Cells(csHangTieuDe + 1 + H, csCotBatDauChuyen + C)

            If (rgDuLieu.Value <> 0) Then
                intCount = intCount + 1

                rgTieuDe_NgayChot.Offset(intCount, 0).Value = NgayChot

                MaVatTu = Cells(rgDuLieu.Row(), csCotMaVatTu)
                ' DOI TEN BE MAT SANG MA BE MAT
                MaBeMat = WorksheetFunction.VLookup(Cells(csHangTieuDe, rgDuLieu.Column()), tblMaBeMatChiTiet, 2, 0)
                MaKho = csMaKhoSonPX1

                ' Chuyen doi ma Phoi sang ma chi tiet thuong
                Call DieuChinhMa(MaVatTu, MaBeMat, MaKho, MaVatTuDC, MaBeMatDC, MaKhoDC)
                rgTieuDe_MaVatTu.Offset(intCount, 0).Value = MaVatTuDC
                rgTieuDe_MaBeMat.Offset(intCount, 0).Value = MaBeMatDC
                rgTieuDe_MaKho.Offset(intCount, 0).Value = MaKhoDC

                ' So luong
                DonVi = Cells(rgDuLieu.Row(), csCotDonVi)
                SoLuong = rgDuLieu.Value
                If SoLuong < 0 Then
                    MsgBox ("Bang Son_PX1, kiem tra lai ma " & MaVatTu & "-" & MaBeMat & " tai kho " & MaKho & " bi am " & SoLuong)
                End If
                If DonVi <> "kg" Then
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = SoLuong
                Else
                    'Quy doi so luong
                    rgTieuDe_SoLuong.Offset(intCount, 0).Value = QuyDoiVatTuTuKgSangCai(MaVatTu, SoLuong)
                End If

            End If
NextC4:
    Next C
NextH4:
    Next H
Xem kết quả mẫu mà vẫn không hiểu dữ liệu kết quả từ đâu có.
Nếu chỉ tìm mã thì được 5 mã:
KE07.N ----------200
KE03.O ----------1000
KE03.TAY ----------1000
KE07.N -----------150
KEEX07.TS -----------192
 
Upvote 0
Xem kết quả mẫu mà vẫn không hiểu dữ liệu kết quả từ đâu có.
Nếu chỉ tìm mã thì được 5 mã:
KE07.N ----------200
KE03.O ----------1000
KE03.TAY ----------1000
KE07.N -----------150
KEEX07.TS -----------192
File của em nặng quá không tải lên được, dữ liệu thì lấy ở 5 sheet khác nhưng chỉ có dữ liệu trung ở 3 sheet em nói ở trên. Hiện tại thì mỗi lần chạy xong là em phải chạy thêm 1 macro để lọc dữ liệu trùng nữa nên hơi mất thời gian nên em muốn viết thêm vào phần lấy dữ liệu để chạy 1 lần là có kết quả luôn. Anh có mail không em gửi qua mail cho anh để xem cho rõ hơn.
 
Upvote 0
Xem kết quả mẫu mà vẫn không hiểu dữ liệu kết quả từ đâu có.
Nếu chỉ tìm mã thì được 5 mã:
KE07.N ----------200
KE03.O ----------1000
KE03.TAY ----------1000
KE07.N -----------150
KEEX07.TS -----------192
Anh ơi, anh xem hộ em file đính kèm, hiện tại ở cột mã vật tư có 2 mã là KEEX03_MDO là trùng nhau, bây giờ em muốn xóa dòng KEEX03_MDO có mã bề mặt là "_" thì làm thế nào ạ. Em cảm ơn.
 

File đính kèm

  • Book1.xlsx
    8.5 KB · Đọc: 2
Upvote 0
tôi có vòng lặp

PHP:
sub news()
'
If vianboolean = True Then Exit Sub

' code

Application.OnTime Now + TimeValue("00:10:00"), "News"
end sub

và button thay đổi trạng thái

PHP:
Private Sub CommandButton1_Click()
vianboolean = True
ens sub

button gọi marco chạy lại

PHP:
Sub viannews()
vianboolean = False
Call News
End Sub

Vấn đề ở đây là macro của tôi sẽ bị lỗi nếu như tôi chạy sub viannews trước khi sub news trước bị exit thì nó chạy 2 cái sub song song, cái này giải quyết như thế nào mọi người giúp tôi với!!![/PHP]
 
Upvote 0
Mình tham khảo một đoạn codec của một bạn cao thủ trên diễn đàn rồi xào lại nhưng lại bị lỗi ở dòng If data1(i, 2).Value = data2(1, 1).Value Then mà mình không hiểu vì sao, mong mọi người giải thích giúp. Cảm ơn mọi người!
Sub DropDown1_Change()
Dim data(), data1()
Dim data2()
data2 = Sheet2.Range("P6:Q6").Value
iR = Sheet1.Range("D" & Rows.Count).End(xlUp).Row
If iR < 4 Then Exit Sub
data = Sheet1.Range("B5:M" & iR).Value
iR = UBound(data, 1)
ReDim data1(1 To iR, 1 To 12)
For i = 1 To iR
If data1(i, 2).Value = data2(1, 1).Value Then
Sheet1.Range("B" & i & ":M" & i).Value = data1()
End If
Sheet2.Range("B" & i & ":M" & i).Value = data1()
Next i
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Mình tham khảo một đoạn codec của một bạn cao thủ trên diễn đàn rồi xào lại nhưng lại bị lỗi ở dòng If data1(i, 2).Value = data2(1, 1).Value Then mà mình không hiểu vì sao, mong mọi người giải thích giúp. Cảm ơn mọi người!
PHP:
 Sub DropDown1_Change()
     ' . . . . . . . . . '
 End Sub

Thường thì các macro tác dụng lên trang tính nào đó; & macro này của bạn cũng không ngoại lệ
Nhưng bạn chưa đưa trang tính lên thì bạn giống như bảo mọi người làm thầy bói rồi còn gì?

 
Upvote 0
Bỏ .Value đi thì hết lỗi dòng đó nhưng mấy dòng dưới lỗi tiếp...

Mình cần tìm hiểu và nắm chắc căn bản đã.
Từ cách dùng biến, điều khiển đối tượng Range (thuộc tính, phương thức), rồi đến Array.

Đọc tạm bài #4-6-10.

Cần học cách cẩn thận với từ ngữ trước đã. Chỉ riêng có từ "code" mà cũng không biết đánh vần thì căn bản quái gì nữa.
Mình tham khảo một đoạn codec của một bạn cao thủ trên diễn đàn rồi xào lại ...
 
Upvote 0
Mình tham khảo một đoạn code của 1 cao thủ trên diễn đàn rồi xào lại nhưng lại bị lỗi ở dòng If data1(i, 2).Value = data2(1, 1).Value Then
mà mình không hiểu vì sao, mong mọi người giải thích giúp.
PHP:
Sub DropDown1_Change()
 Dim data(), data1(), data2()

 data2 = Sheet2.Range("P6:Q6").Value
 iR = Sheet1.Range("D" & Rows.Count).End(xlUp).Row
 If iR < 4 Then Exit Sub
 data = Sheet1.Range("B5:M" & iR).Value
 iR = UBound(data, 1)
 ReDim data1(1 To iR, 1 To 12)
 For i = 1 To iR
    If data1(i, 2).Value = data2(1, 1).Value Then
      Sheet1.Range("B" & i & ":M" & i).Value = data1()
    End If
    Sheet2.Range("B" & i & ":M" & i).Value = data1()
 Next i
End Sub
Thứ nhất: Bạn chưa cho biết nó báo lỗi như thế nào?
Hình như bạn chưa nạp dữ liệu cho mảng data1() mà, fải không? Vậy làm sao thỏa câu lệnh đó được?
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT
Back
Top Bottom