Cần viết Code tìm Vlookup của File A thông qua File B mà không phụ thuộc tên File B (1 người xem)

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

hung2412

Thành viên tích cực
Tham gia
5/8/08
Bài viết
934
Được thích
240
Giới tính
Nam
Xin chào các Anh chị và các bạn GPE!
Nhờ các Anh chị và các bạn giúp đỡ cho tôi vấn đề này với, cụ thể như sau:
Tôi có 2 File Excel là A và B đang mở cùng lúc. Tại File A tôi đặt công thức Vlookup để dò tìm thông tin trên File B => Tôi xài Code (Code 1):
PHP:
Sub Vlookup()
Windows("A.xls").Activate
Range([C6], [C9]) = "=VLOOKUP(RC[-1],'[B.xls]Sheet1'!R7C2:R10C3,2,0)"
End Sub
Đoạn Code B.xls trên tôi thay bằng biến Wb để không phụ thuộc tên File B => Vì vậy, tôi thay thế Code trên bằng Code sau (Code 2):
PHP:
Sub Vlookup()
 Dim Wb As Workbook
Set Wb = Workbooks("B.xls")
Windows("A.xls").Activate
Range([C6], [C9]) = "=VLOOKUP(RC[-1],'[Wb]Sheet1'!R7C2:R10C3,2,0)"
End Sub
=> Tôi chạy Code trên nó hiện ra cái bảng đòi mở File B (Mặc dù File B đang mở) thì nó mới chạy tiếp như vầy:
Bang.jpg
=> Làm thế nào để sửa Code 2 để nó không hiện ra hộp thoại trên mà vẫn dò tìm Vlookup trên File B?
Mong các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 02 File đính kèm.
 

File đính kèm

Lần chỉnh sửa cuối:
Giá trị Vlookup trong VBA là dạng chuỗi, trong khi Wb là biến.

Công việc của bạn là đưa giá trị biến vào chuỗi. Nó giống như kiểu
Mã:
="Anh Yêu " & [A1].Value

=> Trả về "Anh Yêu Em" với [A1]="Em"
 
Upvote 0
Giá trị Vlookup trong VBA là dạng chuỗi, trong khi Wb là biến.

Công việc của bạn là đưa giá trị biến vào chuỗi. Nó giống như kiểu
Mã:
="Anh Yêu " & [A1].Value

=> Trả về "Anh Yêu Em" với [A1]="Em"
Tôi hiểu cái nối chuỗi đó => Thế vận dụng vào Code 2 thì như thế nào ạ?.
 
Upvote 0
Như thế này bạn này
Mã:
Range([C6], [C9]) = "=VLOOKUP(RC[-1],'[" & Wb.Name & "]Sheet1'!R7C2:R10C3,2,0)"
Wb.Name = lấy tên Wb
 
Upvote 0
Như thế này bạn này
Mã:
Range([C6], [C9]) = "=VLOOKUP(RC[-1],'[" & Wb.Name & "]Sheet1'!R7C2:R10C3,2,0)"
Wb.Name = lấy tên Wb
Tôi cũng đã từng viết như thế này " & Wb & " => Sai.
Viết như bạn như thế này " & Wb.Name & " => Đúng.
Rắc rối ở chỗ là do không thêm .Name => Cái này tôi mới biết lần đầu.
Cảm ơn bạn đã chỉ giáo cho tôi.
 
Upvote 0
Bạn để ý khi bạn lập công thức hay lập trình thì cũng theo nguyên tắc gom các phần nhỏ để ra đoạn thức hay code lớn

Do đó để kiểm tra ta có thể xé nhỏ chúng ra xem nó trả về cái gì.

Trong lập trình thì biết nó trả về cái gì thì ta dùng MSGBOX, Debug.Print hay đập xuống sheets.

Như bài #2 nếu bạn để ý tôi gợi ý thì sẽ có suy luận như sau

1/ Chắc chắn lỗi là Wb
2/ Wb trả về cái gì
3/ Mục đích là Wb phải trả về chuỗi tên workbook vậy cách lấy tên workbook như thế nào.

Một chút chia sẻ thôi, nếu bạn không muốn nghe thì bỏ qua nhé.
 
Upvote 0
Bạn để ý khi bạn lập công thức hay lập trình thì cũng theo nguyên tắc gom các phần nhỏ để ra đoạn thức hay code lớn

Do đó để kiểm tra ta có thể xé nhỏ chúng ra xem nó trả về cái gì.

Trong lập trình thì biết nó trả về cái gì thì ta dùng MSGBOX, Debug.Print hay đập xuống sheets.

Như bài #2 nếu bạn để ý tôi gợi ý thì sẽ có suy luận như sau

1/ Chắc chắn lỗi là Wb
2/ Wb trả về cái gì
3/ Mục đích là Wb phải trả về chuỗi tên workbook vậy cách lấy tên workbook như thế nào.

Một chút chia sẻ thôi, nếu bạn không muốn nghe thì bỏ qua nhé.
Bạn nói rất chuẩn. Tôi lại có thêm một chút kinh nghiệm. Không có phiền hà chi cả, muốn biết thì phải hỏi thôi.
 
Upvote 0

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

Back
Top Bottom