[Hỏi đáp] kết hợp range và cell trong VBA (khó)

Liên hệ QC

NguyenVietThinh08

Thành viên chính thức
Tham gia
12/5/20
Bài viết
86
Được thích
4
Chào các bác, em có câu lệnh này nhưng thử đi thử lại k thể nào chạy được, mong bác nào cao kiến chỉ giúp ạ

Set rngSource = wksData.Range(Range(Cells(20, 3), Cells(20, Lc)), Range(Cells(26, 3), Cells(26, Lc)))

em muốn chọn 2 vung dữ liệu riêng biệt, 1 vùng là từ dòng 20 từ vùng C20 đến ô cuối cùng là dòng 20 là Lc, sau đó chọn vùng tiếp theo là chọn vùng từ C26 đến ô cuối cùng của dòng 26 là Lc, "Lc" là cột cuối
Cách ghép của em nó sẽ chọn cả một mảng từ ô C20 đến ô cuối cùng dòng 26, như vậy k đúng ý của em, mong bác nào vào giải đáp giúp em
 
Phải dùng UNION
Mã:
Set rngSource = Union(WksData.Range(Cells(20, 3), Cells(20, Lc)), WksData.Range(Cells(26, 3), Cells(26, Lc)))

Ví dụ
Mã:
Sub test()
Dim Lc As Long, rngSource As Range
    Lc = 11
   
    Set rngSource = Union(WksData.Range(Cells(20, 3), Cells(20, Lc)), WksData.Range(Cells(26, 3), Cells(26, Lc)))
   
    rngSource.Select                ' MsgBox rngSource.Address
End Sub

HOẶC

Sub test()
Dim rngSource As Range
    Set rngSource = Union(WksData.Range(Cells(20, "C"), Cells(20, "K")), WksData.Range(Cells(26, "C"), Cells(26, "K")))
   
    rngSource.Select                ' MsgBox rngSource.Address
End Sub
2 code trong ví dụ là như nhau vì cột thứ 3 chính là cột C, và cột thứ 11 chính là cột K
 
Lần chỉnh sửa cuối:
Upvote 0
Chí ít có 2 cách xác đinh Cột cuối chứa dữ liệu của 1 dòng (Ví dụ dòng là 20):
PHP:
Sub XacDinhCotCuoiChacCu()
Dim LC As Long

LC = Cells(20, Cells.Columns.Count).End(xlToLeft).Column
MsgBox LC, , "Côt Cuói Cua Dòng 20"
End Sub
Mã:
Sub XacDinhCotCuoiVoiDuLieuChuan()
Dim LC As Integer

LC = Cells(20, 3).End(xlToRight).Column
MsgBox LC, , "Côt Cuói Cua Dòng 20"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Phải dùng UNION
Mã:
Set rngSource = Union(WksData.Range(Cells(20, 3), Cells(20, Lc)), WksData.Range(Cells(26, 3), Cells(26, Lc)))

Ví dụ
Mã:
Sub test()
Dim Lc As Long, rngSource As Range
    Lc = 11
  
    Set rngSource = Union(WksData.Range(Cells(20, 3), Cells(20, Lc)), WksData.Range(Cells(26, 3), Cells(26, Lc)))
  
    rngSource.Select                ' MsgBox rngSource.Address
End Sub

HOẶC

Sub test()
Dim rngSource As Range
    Set rngSource = Union(WksData.Range(Cells(20, "C"), Cells(20, "K")), WksData.Range(Cells(26, "C"), Cells(26, "K")))
  
    rngSource.Select                ' MsgBox rngSource.Address
End Sub
2 code trong ví dụ là như nhau vì cột thứ 3 chính là cột C, và cột thứ 11 chính là cột K
Cảm ơn bác. Em sẽ test xem sao.
 
Upvote 0
Web KT
Back
Top Bottom