cú pháp set range này bị sai ở đâu? (1 người xem)

Liên hệ QC

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

Tường_Vi

Thành viên tiêu biểu
Tham gia
19/4/10
Bài viết
482
Được thích
121
Nghề nghiệp
Luôn tìm kiếm một vị trí tốt hơn
PHP:
Dim ImpCur as range
Set ImpCur = Range("[DS_SEA_DATA]IMP!M5:M5000")

Em muốn set Range có tên là IMPCUR có vùng dữ liệu từ M5:M5000 nhưng khi chạy code nó báo lỗi
Anh/Chị sửa giúp em nhé
 
Nếu vùng dữ liệu thuộc sheet1 (chẳng hạn) đã đặt tên, thì dùng cú pháp:
với sh là biến worksheet chứa vùng dữ liệu:

Set sh = sheet1
Set ImCur = sh.Range("IMPCUR")

(mặc dù viết tắt một số câu lệnh có thể làm cho code trông có vẻ ngắn gọn, nhưng tôi vẫn thích cách "truyền thống', khai báo tường minh các tham chiếu)
 
Upvote 0
Em có 02 file excel (File 1 & File cùng đang mở)
File 1: là file DATA có tên: DS_SEA_DATA
-----: --------------------------------- trong file DS_SEA_DATA, có sheet IMP (sheet1)

File2: là file report
Tại file 2: em muốn đặt set range cho vùng dữ liệu của
file 1 DS_SEA_DATA (sheet1.[M5:m5000] = IMPCUR thì em làm như nào?
 
Lần chỉnh sửa cuối:
Upvote 0
Em có 02 file excel (File 1 & File cùng đang mở)
File 1: là file DATA có tên: DS_SEA_DATA
-----: --------------------------------- trong file DS_SEA_DATA, có sheet IMP (sheet1)

File2: là file report
Tại file 2: em muốn đặt set range cho vùng dữ liệu của
file 1 DS_SEA_DATA (sheet1.[M5:m5000] = IMPCUR thì em làm như nào?
Cũng đơn giản thôi mà... Cứ cú pháp này mà làm:
Set ImCur = Workbooks("Tên Wb").Sheets("Tên Sheet").Range("Vùng")
Xong!
 
Upvote 0
Em có 02 file excel (File 1 & File cùng đang mở)
File 1: là file DATA có tên: DS_SEA_DATA
-----: --------------------------------- trong file DS_SEA_DATA, có sheet IMP (sheet1)

File2: là file report
Tại file 2: em muốn đặt set range cho vùng dữ liệu của
file 1 DS_SEA_DATA (sheet1.[M5:m5000] = IMPCUR thì em làm như nào?
Bạn thử dòng lện sau xem
PHP:
Set rng = Workbooks("DS_SEA_DATA.xls").Sheets("IMP")Range("M5:M5000")
(Chú ý File DS_SEA_DATA.xls đang mở)
 
Upvote 0
Chắn chắn bạn sẽ truy xuất nhiều đến file data trong quá trình xử lý, cho nên ngay trong sự kiện open (ở phần hỏi trước) bạn đã có thể đặt tham chiếu đến workbook này.
Ví dụ có thể là:
PHP:
'Khai báo các biến public ở modul để truy xuất về sau'
Public wbDat as WorkBook, shDat as WorkSheet, raDat as Range
'--------------'

Private Sub Workbook_Open()
    Workbooks.Open "..."
    Set wbDat = ActiveWorkbook 
    Set shDat = wbDat.Sheet1
    Set raDat = shDat.Range("M5:M5000")
    ' hoặc Set raDat = shDat.Range("IMPCUR")
 End Sub
 
Upvote 0
Dear Anh Chị
Em thử test trong Immediate window dòng code sau
PHP:
?Workbooks("DS_SEA_DATA").Sheets("IMP").Range("M5:M" & Range("[DS_SEA_DATA]IMP!M99000").End(xlUp).Row).address
$M$5:$M$5469
rõ là kết quả trả về vùng dữ liệu $M$5:$M$5469

Nhưng không hiểu sao lúc chạy code nó bôi vàng dòng này

PHP:
Dim ImpCur As Range
Set ImpCur = Workbooks("DS_SEA_DATA").Sheets("IMP").Range("M5:M" & Range("[DS_SEA_DATA]IMP!M99000").End(xlUp).Row)
 
Upvote 0
Dear Anh Chị
Em thử test trong Immediate window dòng code sau
PHP:
?Workbooks("DS_SEA_DATA").Sheets("IMP").Range("M5:M" & Range("[DS_SEA_DATA]IMP!M99000").End(xlUp).Row).address
$M$5:$M$5469
rõ là kết quả trả về vùng dữ liệu $M$5:$M$5469

Nhưng không hiểu sao lúc chạy code nó bôi vàng dòng này

PHP:
Dim ImpCur As Range
Set ImpCur = Workbooks("DS_SEA_DATA").Sheets("IMP").Range("M5:M" & Range("[DS_SEA_DATA]IMP!M99000").End(xlUp).Row)
Nếu là tôi thì tôi sẽ viết thé này:
PHP:
Sub Test()
  Dim ImpCur As Range
  With Workbooks("DS_SEA_DATA.xlsx").Sheets("IMP")
    Set ImpCur = .Range("M5:M" & .Range("M99000").End(xlUp).Row)
  End With
  MsgBox ImpCur.Address
End Sub
Hoặc cách viết khác:
PHP:
Sub Test()
  Dim ImpCur As Range
  With Workbooks("DS_SEA_DATA.xlsx").Sheets("IMP")
    Set ImpCur = .Range(.[M5], .[M99000].End(xlUp))
  End With
  MsgBox ImpCur.Address
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi giả lập 2 book và test theo cú pháp của bạn thì không có gì lỗi!!!
 
Upvote 0
Tôi giả lập 2 book và test theo cú pháp của bạn thì không có gì lỗi!!!
Cũng chưa chắc đâu!
Cái vụ gọi tên Workbook có đuôi xlsx hoặc không còn tùy thuộc thiết lập trong Folder Options ---> Nếu không check mục "Hide extension... " thì tên Workbook hiển thị trên Title luôn có phần mở rộng (là .xls hay .xlsx gì gì đó)
Vậy nên, khi gọi tên 1 Workbook, cho luôn phần mở rộng vào cho chắc (Folder Options thiết lập sao cũng chạy)
Ví dụ
Mã:
Sub Test()
  Dim ImpCur As Range
  With Workbooks("DS_SEA_DATA[COLOR=#ff0000][B].xlsx[/B][/COLOR]").Sheets("IMP")
    Set ImpCur = .Range(.[M5], .[M99000].End(xlUp))
  End With
  MsgBox ImpCur.Address
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom