Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

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

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,957
Nhờ các Anh xem code em sai cho nào
Hiện tại mình làm copy 1 sheet qua sheet(Data) thì đươc nhưng copy tất cả thì không được
Mã:
Private Sub CommandButton1_Click()
Dim Ws As Worksheet, sArr(), dArr(), i As Long, j As Byte, n As Byte, k As Long, m As Long
For Each Ws In ThisWorkbook.Worksheets
    If Ws.Name <> "Data" Then
With Ws
   sArr = .Range("G10", .[AI65536].End(3)).Value
   ReDim dArr(1 To UBound(sArr), 1 To 4)
   For i = 1 To UBound(sArr, 1)
    If sArr(i, 1) <> "" Then
      k = k + 1
      For j = 1 To 4
         n = Choose(j, 1, 2, 3, 7)
         dArr(k, j) = sArr(i, n)
      Next
    End If
   Next
Sheet1.[B65536].End(3)(2).Resize(k, 4) = dArr
sArr = .Range("AC10", .[AI65536].End(3)).Value
   ReDim dArr(1 To UBound(sArr), 1 To 4)
   For i = 1 To UBound(sArr, 1)
    If sArr(i, 1) <> "" Then
      m = m + 1
      For j = 1 To 4
         n = Choose(j, 1, 2, 3, 7)
         dArr(m, j) = sArr(i, n)
      Next
    End If
   Next
   Sheet1.[B65536].End(3)(1).Offset(1, 0).Resize(m, 4) = dArr
End With
End If
Next Ws
End Sub
 
Upvote 0
Nhờ các Anh xem code em sai cho nào
Hiện tại mình làm copy 1 sheet qua sheet(Data) thì đươc nhưng copy tất cả thì không được
Mã:
Private Sub CommandButton1_Click()
Dim Ws As Worksheet, sArr(), dArr(), i As Long, j As Byte, n As Byte, k As Long, m As Long
For Each Ws In ThisWorkbook.Worksheets
    If Ws.Name <> "Data" Then
With Ws
   sArr = .Range("G10", .[AI65536].End(3)).Value
   ReDim dArr(1 To UBound(sArr), 1 To 4)
   For i = 1 To UBound(sArr, 1)
    If sArr(i, 1) <> "" Then
      k = k + 1
      For j = 1 To 4
         n = Choose(j, 1, 2, 3, 7)
         dArr(k, j) = sArr(i, n)
      Next
    End If
   Next
Sheet1.[B65536].End(3)(2).Resize(k, 4) = dArr
sArr = .Range("AC10", .[AI65536].End(3)).Value
   ReDim dArr(1 To UBound(sArr), 1 To 4)
   For i = 1 To UBound(sArr, 1)
    If sArr(i, 1) <> "" Then
      m = m + 1
      For j = 1 To 4
         n = Choose(j, 1, 2, 3, 7)
         dArr(m, j) = sArr(i, n)
      Next
    End If
   Next
   Sheet1.[B65536].End(3)(1).Offset(1, 0).Resize(m, 4) = dArr
End With
End If
Next Ws
End Sub
Sau mỗi lần lặp bạn phải đưa giá trị k, m = 0
Mã:
k = 0: m = 0
Next Ws
End Sub
Lưu ý : kết quả đúng sai là do bạn, mình chỉ làm cho code hết lỗi thôi :D
 
Upvote 0
Hỏi code lộc dữ liệu AdvancedFilter
Chỉnh vùng điều kiện Range("I3:N4") thành Range("I3:N10") thì không lọc được anh nào biết sai chỗ nào không
Mã:
[TABLE="width: 72"]
[TR]
[TD="width: 72"][COLOR=#0000ff]Private Sub  CommandButton1_Click()[/COLOR][/TD]
[/TR]
[TR]
[TD][COLOR=#0000ff]     Sheet1.Range("A3:F1000").AdvancedFilter xlFilterCopy,  Range("I3:[/COLOR][COLOR=#ff0000]N4[/COLOR][COLOR=#0000ff]"), Range("P4:U4")
End sub[/COLOR][/TD]
[/TR]
[/TABLE]
 
Lần chỉnh sửa cuối:
Upvote 0
Bài này đã được anh Cá ngừ F1 giải rồi
Mã:
[/FONT][/COLOR]Private Sub CommandButton1_Click()
    Sheet1.Range("A3:F1000").AdvancedFilter xlFilterCopy, [I3].CurrentRegion, Range("P4:U4")
End Sub


 
Upvote 0
Sổ chi tiết khách hàng này e tìm đc từ diễn đàn. E muốn học code nên đã tạo sổ cái các tài khoản lập trong sheet1
Private Sub test()Dim arr, arrkq
Dim i, j, erow As Long
Dim stk As Long
stk = Sheet5.Range(
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn sửa 1 chút cho hoạt hơn về dữ liệu:

Mã:
Sub test()
Dim arr, arrkq
Dim i, j, erow As Long
Dim stk As Long
 stk = Sheet5.Range("C4").Value
 erow = Sheet1.Range("A65000").Row
arr = Sheet1.Range("A9:H" & erow).Value
ReDim arrkq(1 To 200, 1 To 6)
   For i = 1 To UBound(arr)
      [COLOR=#ff0000]If arr(i, 6) Like stk & "*" Then[/COLOR]
         j = j + 1
           arrkq(j, 1) = arr(i, 3)
           arrkq(j, 2) = arr(i, 4)
           arrkq(j, 3) = arr(i, 5)
           arrkq(j, 4) = arr(i, 7)
           arrkq(j, 5) = arr(i, 8)
           End If
     [COLOR=#ff0000] If arr(i, 7) Like stk & "*" Then[/COLOR]
         j = j + 1
           arrkq(j, 1) = arr(i, 3)
           arrkq(j, 2) = arr(i, 4)
           arrkq(j, 3) = arr(i, 5)
           arrkq(j, 4) = arr(i, 6)
           arrkq(j, 6) = arr(i, 8)
      End If
   Next i
[COLOR=#ff0000]If j > 0 Then[/COLOR] Sheet5.Range("A11").Resize(j, 6) = arrkq
Exit Sub: Erase arr(), arrkq()

End Sub
 
Upvote 0
Đây là code sổ chi tiết của tác giả (file phía trên) đoạn e bôi đỏ . tham số k có ý nghĩa j và đoạn code bôi đỏ đó có tác dụng j, e ko hiểu nên ko vận dụng cách của tác giả đc
Code trên có các biến được khai báo: Dim endR&, fD&, eD&, i&, s&, k&

Chỉ mỗi biến
k là có trong câu hỏi của bạn, còn các biến khác mà tôi tô đỏ trong bài của bạn là biến ở đâu vậy bạn?@#!^%
 
Upvote 0
Theo e hiểu thì i,s là hàng, k là cột mà tại sao lại là 1 to 4 - - - - - - - - - E ko hiểu k đóng vai trò j trong bài này e mới hỏi mà -\\/.
 
Lần chỉnh sửa cuối:
Upvote 0
Theo e hiểu thì i,s là hàng, k là cột mà tại sao lại là 1 to 4 +-+-+-++-+-+-++-+-+-+ E ko hiểu k đóng vai trò j trong bài này e mới hỏi mà -\\/.
Nói như vậy mà không hiểu thì hiểu sao được code trời! Viết bài đừng có dùng những ngôn từ chat vào đây nhé! Nhiều người rất dị ứng!
 
Upvote 0
Code VBA để link dữ liệu từ nhiều file đuổi csv vào một file excel

Topic Những câu hỏi về code, xin giải thích các code... đã quá dài nên mình đóng nó lại và mở topic khác
Tất cả những bài viết liên quan đến việc nhờ giải thích, xử lý và gỡ rối code VBA, các bạn vui lòng đăng tại đây!
Cảm ơn
Hi các anh chị
Em đang có đề tài không biết xử lý như thế nào. Mong các anh chị giúp đỡ. Em có một phần mềm tự động xuất dữ liệu một mã hàng ra một file csv (file name: tên của đơn hàng.csv). Một ngày có khoảng 30 file csv được xuất ra. Em muốn tổng hợp dữ liệu này một cách tự động từ file csv sang một file excel duy nhât. Nghĩa là mỗi lần có một file csv được tạo ra thì file excel sẽ tự động cập nhất. File csv chứa dữ liệu bề dày của nguyên liệu . Một dòng là bể dày của 1 lot (đo > 10 lần).
Vd:
1.3 2.1 1.5 1.6 1.7 1.8 1.9 2.3
2 2.4 1.7 2.0 2.4 1.9 2.3 2.0
........
File excel của em gồm nhiều cột. Trong đó em dự định cập nhật tự động file như sau
- Model : file name của file csv
- Bề dày mạ (10 điểm): một dòng là một dòng dữ liệu tương ứng trên file csv.
Có anh chị nào có thể giúp em viết code VBA được không ạ.
 

File đính kèm

Upvote 0
Mình có viết một code Dic lọc duy nhất xuất kết quả ra đúng như mong muốn . nhưng khi mình thử xoá hết dữ liệu vùng nguon đi thì chạy code không có dữ liệu thì nó lấy luôn Tiêu đề vùng nguồn qua không biết mình làm sai chỗ nào mong các bạn chỉ giúp
xin cảm ơn
PHP:
Sub LocDuyNhat()
Dim nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
With ActiveSheet
    nguon = .Range(.[C4], .[C65536].End(3)).Resize(, 2).Value
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon, 1)
        If Not .exists(nguon(i, 1)) Then
            .Add nguon(i, 1), ""
            If nguon(i, 2) <> "" Then
                k = k + 1
                KQ(k, 1) = nguon(i, 1)
                KQ(k, 2) = nguon(i, 2)
            End If
        End If
    Next i
End With
[G4:H65536].ClearContents
[G4].Resize(k, 2) = KQ
End With
End Sub
 
Upvote 0
Mình có viết một code Dic lọc duy nhất xuất kết quả ra đúng như mong muốn . nhưng khi mình thử xoá hết dữ liệu vùng nguon đi thì chạy code không có dữ liệu thì nó lấy luôn Tiêu đề vùng nguồn qua không biết mình làm sai chỗ nào mong các bạn chỉ giúp
xin cảm ơn
PHP:
Sub LocDuyNhat()
Dim nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
With ActiveSheet
    nguon = .Range(.[C4], .[C65536].End(3)).Resize(, 2).Value
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon, 1)
        If Not .exists(nguon(i, 1)) Then
            .Add nguon(i, 1), ""
            If nguon(i, 2) <> "" Then
                k = k + 1
                KQ(k, 1) = nguon(i, 1)
                KQ(k, 2) = nguon(i, 2)
            End If
        End If
    Next i
End With
[G4:H65536].ClearContents
[G4].Resize(k, 2) = KQ
End With
End Sub

Thử với cái này:

Mã:
Sub LocDuyNhat()
    Dim LastRow As Long
    LastRow = Range("C65536").End(3)
    If LastRow < 4 Then Exit Sub
    Dim Nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
    Nguon = Range("C4:D" & LastRow)
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(Nguon, 1)
            If Not .Exists(Nguon(i, 1)) Then
                .Add Nguon(i, 1), ""
                If Nguon(i, 2) <> "" Then
                    k = k + 1
                    KQ(k, 1) = Nguon(i, 1)
                    KQ(k, 2) = Nguon(i, 2)
                End If
            End If
        Next i
    End With
    Range("G4:H65536").ClearContents
    Range("G4").Resize(k, 2) = KQ
End Sub
 
Upvote 0
Mình có viết một code Dic lọc duy nhất xuất kết quả ra đúng như mong muốn . nhưng khi mình thử xoá hết dữ liệu vùng nguon đi thì chạy code không có dữ liệu thì nó lấy luôn Tiêu đề vùng nguồn qua không biết mình làm sai chỗ nào mong các bạn chỉ giúp
xin cảm ơn
PHP:
Sub LocDuyNhat()
Dim nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
With ActiveSheet
    nguon = .Range(.[C4], .[C65536].End(3)).Resize(, 2).Value
With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon, 1)
        If Not .exists(nguon(i, 1)) Then
            .Add nguon(i, 1), ""
            If nguon(i, 2) <> "" Then
                k = k + 1
                KQ(k, 1) = nguon(i, 1)
                KQ(k, 2) = nguon(i, 2)
            End If
        End If
    Next i
End With
[G4:H65536].ClearContents
[G4].Resize(k, 2) = KQ
End With
End Sub
Nếu là tôi viết thì tôi làm vầy:
Mã:
Sub LocDuyNhat1()
  Dim nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
  [COLOR=#ff0000]Dim tmp1 As String, tmp2 As String[/COLOR]
  [COLOR=#ff0000]nguon = ActiveSheet.Range("C4:D10000").Value[/COLOR][COLOR=#006400] ''<--- Khai báo vùng dữ liệu thật to, khỏi End(xlUp) gì ráo[/COLOR]
  With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon, 1)
      [COLOR=#ff0000]tmp1 = CStr(nguon(i, 1))
      tmp2 = CStr(nguon(i, 2))[/COLOR]
      [COLOR=#ff0000]If Len(tmp1) Then  [/COLOR][COLOR=#006400]''<--- Nếu cột 1 khác rổng thì đi tiếp[/COLOR][COLOR=#ff0000]
        If Len(tmp2) Then[/COLOR][COLOR=#ff0000]  [/COLOR][COLOR=#006400]''<--- Nếu cột 2 khác rổng thì đi tiếp[/COLOR]
          If Not .Exists(tmp1) Then
            .Add tmp1, ""
            k = k + 1
            KQ(k, 1) = tmp1
            KQ(k, 2) = tmp2
          End If
        End If
      End If
    Next i
  End With
  [G4:H65536].ClearContents
 [COLOR=#ff0000] If k Then[/COLOR] [G4].Resize(k, 2) = KQ    [COLOR=#006400]''<--- Nếu không lọc ra được gì thì... nghỉ khỏe[/COLOR]
End Sub
Chỗ màu đỏ là những chỗ thêm vào
- Tôi thường hiếm khi dùng End(xlUp) <--- Phiền phức (như bạn đã gặp) hoặc trường hợp dữ liệu bị Filter thì End(xlUp) cũng cho kết quả sai
- Đoạn If k Then cuối cùng để chắc rằng: Nếu không có gì để lọc (tức k=0) thì không làm gì cả
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu là tôi viết thì tôi làm vầy:
Mã:
Sub LocDuyNhat1()
  Dim nguon(), KQ(1 To 65536, 1 To 2), i As Long, k As Long
  [COLOR=#ff0000]Dim tmp1 As String, tmp2 As String[/COLOR]
  [COLOR=#ff0000]nguon = ActiveSheet.Range("C4:D10000").Value[/COLOR][COLOR=#006400] ''<--- Khai báo vùng dữ liệu thật to, khỏi End(xlUp) gì ráo[/COLOR]
  With CreateObject("scripting.dictionary")
    For i = 1 To UBound(nguon, 1)
      [COLOR=#ff0000]tmp1 = CStr(nguon(i, 1))
      tmp2 = CStr(nguon(i, 2))[/COLOR]
      [COLOR=#ff0000]If Len(tmp1) Then  [/COLOR][COLOR=#006400]''<--- Nếu cột 1 khác rổng thì đi tiếp[/COLOR][COLOR=#ff0000]
        If Len(tmp2) Then[/COLOR][COLOR=#ff0000]  [/COLOR][COLOR=#006400]''<--- Nếu cột 2 khác rổng thì đi tiếp[/COLOR]
          If Not .Exists(tmp1) Then
            .Add tmp1, ""
            k = k + 1
            KQ(k, 1) = tmp1
            KQ(k, 2) = tmp2
          End If
        End If
      End If
    Next i
  End With
  [G4:H65536].ClearContents
 [COLOR=#ff0000] If k Then[/COLOR] [G4].Resize(k, 2) = KQ    [COLOR=#006400]''<--- Nếu không lọc ra được gì thì... nghỉ khỏe[/COLOR]
End Sub
Chỗ màu đỏ là những chỗ thêm vào
- Tôi thường hiếm khi dùng End(xlUp) <--- Phiền phức (như bạn đã gặp) hoặc trường hợp dữ liệu bị Filter thì End(xlUp) cũng cho kết quả sai
- Đoạn If k Then cuối cùng để chắc rằng: Nếu không có gì để lọc (tức k=0) thì không làm gì cả
Cảm Ơn Anh nhiều ... Em Học thêm được một cách viết hay
 
Upvote 0
Nếu là tôi viết thì tôi làm vầy:
Mã:
  [COLOR=#ff0000]nguon = ActiveSheet.Range("C4:D10000").Value[/COLOR][COLOR=#006400] ''<--- Khai báo vùng dữ liệu thật to, khỏi End(xlUp) gì ráo[/COLOR]
Tác giả muốn thử xem, nếu không có dữ liệu thì code sẽ làm gì, nếu "chơi" một đống hàng như thế, phải chăng là dù có, dù không dữ liệu thì code vẫn hoạt động, đồng thời, vòng lặp vẫn chạy 10 ngàn lần hay không? Tại sao không ngăn chặn ngay từ đầu vấn đề này khi dữ liệu không có? Khi dữ liệu ít thì code chạy ít đi?

Mã:
Sub LocDuyNhat()
    Dim LastRow As Long, MaxRow As Long
[COLOR=#0000ff]    ''Tinh so hang lon nhat:[/COLOR]
    MaxRow = Rows.Count
    With ActiveSheet [COLOR=#0000ff]''<-- Co the thay bang ten sheet khac[/COLOR]
[COLOR=#0000ff]        ''Loai bo AutoFilter:[/COLOR]
        .AutoFilterMode = False
[COLOR=#0000ff]       ''Tim hang cuoi:[/COLOR]
        LastRow = .Range("C" & MaxRow).End(xlUp)
[COLOR=#ff0000]       ''Neu hang cuoi nho hon hang tieu de thi thoat[/COLOR]
        If LastRow < 4 Then Exit Sub
        Dim Nguon, KQ
        Dim i As Long, k As Long
        Dim Tmp1 As String, Tmp2 As String
        Nguon = .Range("C4:D" & LastRow)
        ReDim KQ(1 To MaxRow, 1 To 2)
        With CreateObject("scripting.dictionary")
            For i = 1 To UBound(Nguon)
                Tmp1 = CStr(Nguon(i, 1))
                Tmp2 = CStr(Nguon(i, 2))
[COLOR=#0000ff]               ''Ca 2 phai khac rong moi chap nhan:[/COLOR]
                If Tmp1 > "" And Tmp1 > "" Then
                    If Not .Exists(Tmp1) Then
                        .Add Tmp1, Empty
                        k = k + 1
                        KQ(k, 1) = Tmp1
                        KQ(k, 2) = Tmp2
                    End If
                End If
            Next i
        End With
        .Range("G4:H" & MaxRow).ClearContents
        If k Then .Range("G4").Resize(k, 2) = KQ
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tác giả muốn thử xem, nếu không có dữ liệu thì code sẽ làm gì, nếu "chơi" một đống hàng như thế, phải chăng là dù có, dù không dữ liệu thì code vẫn hoạt động, đồng thời, vòng lặp vẫn chạy 10 ngàn lần hay không? Tại sao không ngăn chặn ngay từ đầu vấn đề này khi dữ liệu không có? Khi dữ liệu ít thì code chạy ít đi?

Bởi vậy tôi mới nói: "Nếu là tôi viết thì tôi làm vầy"
Tức đó là sở thích riêng của tôi thôi, ai thích khác thì cứ làm khác
Với lại 10000 lần lập cho trường hợp này chỉ là cái nháy mắt, tôi không cảm thấy có việc gì cần quá mức đến nỗi phải lằng nhằng thêm cho mất công
Ẹc... Ẹc...
 
Upvote 0
Bởi vậy tôi mới nói: "Nếu là tôi viết thì tôi làm vầy"
Tức đó là sở thích riêng của tôi thôi, ai thích khác thì cứ làm khác
Với lại 10000 lần lập cho trường hợp này chỉ là cái nháy mắt, tôi không cảm thấy có việc gì cần quá mức đến nỗi phải lằng nhằng thêm cho mất công
Ẹc... Ẹc...
Giỡn chơi hoài Thầy, 10k dòng và nếu với vài chục cột mà chuyển thành mảng cũng khá mất thời gian đó, thêm việc chạy vòng lặp nữa thì cũng ngốn bộ nhớ tạm hơi nhiều đó chứ! Sau đó trước khi End Sub, một lần nữa nó giải phóng cái biến mảng đó cũng ngốn đi một khoảng thời gian nữa. Theo em thì nên tỉ mỉ một chút vẫn thấy bộ nhớ nó "thong thả" hơn.

Vả lại, khi ta đặt cố định hàng như thế, một ngày nào đó số lượng dữ liệu nhiều hơn giá trị ban đầu đó thì rắc rối lại đến với việc xử lý dữ liệu, chắc chắn là không đúng.
 
Lần chỉnh sửa cuối:
Upvote 0
Giỡn chơi hoài Thầy, 10k dòng và nếu với vài chục cột mà chuyển thành mảng cũng khá mất thời gian đó
Ngộ hen! 10000 lần lập thì là 10000 lần thôi, liên quan gì đến số cột nhỉ? 100 cột hay 1 cột mà tôi muốn nó 10000 lần lập thì nó cũng chỉ chạy 10000 lần thôi, có vấn đề gì chứ?
-----------------------------
Vả lại, khi ta đặt cố định hàng như thế, một ngày nào đó số lượng dữ liệu nhiều hơn giá trị ban đầu đó thì rắc rối lại đến với việc xử lý dữ liệu, chắc chắn là không đúng.

Tôi đã nói là "sở thích riêng của tôi" rồi mà
Dữ liệu của tôi bao nhiêu tôi tự biết, chắc chắn sẽ không có bất cứ rắc rối gì
Yên tâm nhé!
---------------
 
Lần chỉnh sửa cuối:
Upvote 0
Tác giả muốn thử xem, nếu không có dữ liệu thì code sẽ làm gì, nếu "chơi" một đống hàng như thế, phải chăng là dù có, dù không dữ liệu thì code vẫn hoạt động, đồng thời, vòng lặp vẫn chạy 10 ngàn lần hay không? Tại sao không ngăn chặn ngay từ đầu vấn đề này khi dữ liệu không có? Khi dữ liệu ít thì code chạy ít đi?

Mã:
Sub LocDuyNhat()
    Dim LastRow As Long, MaxRow As Long
[COLOR=#0000ff]    ''Tinh so hang lon nhat:[/COLOR]
    MaxRow = Rows.Count
    With ActiveSheet [COLOR=#0000ff]''<-- Co the thay bang ten sheet khac[/COLOR]
[COLOR=#0000ff]        ''Loai bo AutoFilter:[/COLOR]
        .AutoFilterMode = False
[COLOR=#0000ff]       ''Tim hang cuoi:[/COLOR]
        LastRow = .Range("C" & MaxRow).End(xlUp)
[COLOR=#ff0000]       ''Neu hang cuoi nho hon hang tieu de thi thoat[/COLOR]
        If LastRow < 4 Then Exit Sub
        Dim Nguon, KQ
        Dim i As Long, k As Long
        Dim Tmp1 As String, Tmp2 As String
        Nguon = .Range("C4:D" & LastRow)
        ReDim KQ(1 To MaxRow, 1 To 2)
        With CreateObject("scripting.dictionary")
            For i = 1 To UBound(Nguon)
                Tmp1 = CStr(Nguon(i, 1))
                Tmp2 = CStr(Nguon(i, 2))
[COLOR=#0000ff]               ''Ca 2 phai khac rong moi chap nhan:[/COLOR]
                If Tmp1 > "" And Tmp1 > "" Then
                    If Not .Exists(Tmp1) Then
                        .Add Tmp1, Empty
                        k = k + 1
                        KQ(k, 1) = Tmp1
                        KQ(k, 2) = Tmp2
                    End If
                End If
            Next i
        End With
        .Range("G4:H" & MaxRow).ClearContents
        If k Then .Range("G4").Resize(k, 2) = KQ
    End With
End Sub
Hình như Nghĩa viết xong rồi chưa chạy thử thì phải code bài 377 và bài này mình chạy thử cả hai thấy báo lỗi...
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom