Cần giúp khắc phục Code bị Debug (Đang ở Sheet B và chọn dữ liệu ở Sheet A) (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ó 1 bảng tính với 2 Sheet như vầy:

h2jX8fa.png

Hiện đang đứng ở Sheet B. Để chọn (Bôi đen) từ ô B4 đến ô cuối cùng có dữ liệu trên cột B ở Sheet A, tôi xài Code:
PHP:
Sheets("A").Range([B4], [B65536].End(xlUp)).Select
=> Code trên bị Debug => Không hiểu là tại làm sao.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.
 

File đính kèm

  • 1.png
    1.png
    4.3 KB · Đọc: 4
  • 86.xls
    86.xls
    26 KB · Đọc: 7
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ó 1 bảng tính với 2 Sheet như vầy:

h2jX8fa.png

Hiện đang đứng ở Sheet B. Để chọn (Bôi đen) từ ô B4 đến ô cuối cùng có dữ liệu trên cột B ở Sheet A, tôi xài Code:
PHP:
Sheets("A").Range([B4], [B65536].End(xlUp)).Select
=> Code trên bị Debug => Không hiểu là tại làm sao.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.

Chỉ cần thêm câu này là tương đối ổn:
PHP:
Sub SelectRange()
    Sheets("A").Activate
    Sheets("A").Range([B4], [B65536].End(xlUp)).Select
End Sub

Bạn đã học được cả Object.Dictionary, mình không tin bạn lại bị lỗi nơi này.
 
Upvote 0
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ó 1 bảng tính với 2 Sheet như vầy:

h2jX8fa.png

Hiện đang đứng ở Sheet B. Để chọn (Bôi đen) từ ô B4 đến ô cuối cùng có dữ liệu trên cột B ở Sheet A, tôi xài Code:
PHP:
Sheets("A").Range([B4], [B65536].End(xlUp)).Select
=> Code trên bị Debug => Không hiểu là tại làm sao.
Mong các Anh chị và các bạn GPE chỉ giáo!
Trân trọng cảm ơn!
P/s: Có 01 File đính kèm.
Mình thì thấy sửa tý ty là được :

sub Thu()
Sheets("A").select
Range([B4], [B65536].End(xlUp)).Select
End sub

Hoặc như bạn phuyen89

Sub SelectRange()
Sheets("A").Activate
Range([B4], [B65536].End(xlUp)).Select
end sub
 
Lần chỉnh sửa cuối:
Upvote 0
Chỉ cần thêm câu này là tương đối ổn:
PHP:
Sub SelectRange()
    Sheets("A").Activate
    Sheets("A").Range([B4], [B65536].End(xlUp)).Select
End Sub

Bạn đã học được cả Object.Dictionary, mình không tin bạn lại bị lỗi nơi này.
Ah, tôi đã nghĩ đến Code trên của bạn rồi, nó là như vầy:
PHP:
Sheets("A").Select
Range([B4], [B65536].End(xlUp)).Select
=> Đúng là phải chọn Sheet A trước sau đó mới đến chọn dữ liệu tại Sheet A => Như vậy là Code ở #1 là không thể thực hiện được.
 
Upvote 0
Đúng là phải chọn Sheet A trước sau đó mới đến chọn dữ liệu tại Sheet A => Như vậy là Code ở #1 là không thể thực hiện được.

Tôi không cần chọn sheet A trước mà vẫn chọn được vùng trong sheet A đấy!
Mọi người tự suy nghĩ xem
Ẹc... Ẹc...
 
Upvote 0
Hình như có lần đã thấy thày nói đến điều này :
Application.Run "Sheet1....." (......là tên sub của sheet1)
 
Upvote 0
Hình như có lần đã thấy thày nói đến điều này :
Application.Run "Sheet1....." (......là tên sub của sheet1)

Ý mình là... hổng phải vậy! Ẹc... Ẹc...
===> Tiếp tục suy nghĩ
Gợi ý: làm bằng tay còn được vụ này huống chi viết code
 
Upvote 0
Ý mình là... hổng phải vậy! Ẹc... Ẹc...
===> Tiếp tục suy nghĩ
Gợi ý: làm bằng tay còn được vụ này huống chi viết code
Nhà em cũng xin "chầu rìa " chờ giải . Không hiểu sao đứng ở sheet2 gọi :

Worksheets("Sheet1").Range("B4:B10").copy

thì được mà thay .copy bằng .Select thì lỗi . thế mới biết "bánh đúc có xương !" khó nhai quá thày ạ .
 
Upvote 0
Tôi không cần chọn sheet A trước mà vẫn chọn được vùng trong sheet A đấy!
Mọi người tự suy nghĩ xem
Ẹc... Ẹc...

Em tính trốn mà ngứa tay quá nên chọt vô chút.

Muốn chọn 1 vùng trong 1 sheet khác thì không thể dùng lệnh Select.
Cần phải đặt tên cho vùng đó, và dùng lệnh Application.Goto
Nếu lười tạo name thì gọi thẳng luôn cũng được.
.............

Nhưng có cần thiết không ta?
 
Lần chỉnh sửa cuối:
Upvote 0
Application.Goto

bạn Ghi macro cái là ra ngay, sao khó nhỉ?
 
Upvote 0
Em tính trốn mà ngứa tay quá nên chọt vô chút.

Muốn chọn 1 vùng trong 1 sheet khác thì không thể dùng lệnh Select.
Cần phải đặt tên cho vùng đó, và dùng lệnh Application.Goto
Nếu lười tạo name thì gọi thẳng luôn cũng được.
.............

Nhưng có cần thiết không ta?
Mình thấy trên diễn đàn, thày NDU thì đi quá xa không ai theo kịp rồi ( 4 Huy chương ) , ngoài ra đến các thành viên vác 4 , năm sao "Đứng" chạy theo, trong đó có Quang Hải . Hình như "Quang Hải" chạy một mình cũng buồn nên xuống xe giải lao rồi ! Có việc có nhiều phương án để giải quyết, nhưng biết thêm 1 phương án ( nhất là quái chiêu ) thì cũng nên biết thôi mà ; Vả lại ngồi ngoài tay nó ngứa ngáy lắm . Lâu rồi mình thấy GPE lặng lẽ quá " Cá đâu đớp động dưới chân bèo !..." Cái không khí sôi sục nhiều khi phải "Lôi nhau sang Topic khác " để tranh luận của ngày xưa đâu rồi , sao mà thấy buồn ...
 
Lần chỉnh sửa cuối:
Upvote 0
Xin hỏi thày NDU ngoài đáp án trên còn "chiêu " nào khác không ạ ? Với đáp án trên, đúng như kiểu " Đuổi hình bắt chữ " Khi có đáp án rồi mới "À..." hay thật.
 
Lần chỉnh sửa cuối:
Upvote 0
[thongbao]Application.Goto[/thongbao]
Chắc là vầy:
PHP:
Application.Goto Reference:="A!R4C2:R" & Sheets("A").[B65536].End(xlUp).Row & "C2"
 
Upvote 0
Xin hỏi thày NDU ngoài đáp án trên còn "chiêu " nào khác không ạ ? Với đáp án trên, đúng như kiểu " Đuổi hình bắt chữ " Khi có đáp án rồi mới "À..." hay thật.

Bạn nên tìm hiểu Application.Goto khác với worksheets(...).Active và Select ra sao có lẽ tốt hơn.
Nhiều "chiêu" mà chiêu nào cũng không trọn thì khó xài lắm.

Chú thích: ở bài #13 tôi có nhắc về sự kiện. Nhưng đó chỉ là nhắc khéo thôi; hai cái đều gây sự kiện như nhau. Thật ra thì chúng có điểm khác nhau khá quan trọng.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn nên tìm hiểu Application.Goto khác với worksheets(...).Active và Select ra sao có lẽ tốt hơn.
Nhiều "chiêu" mà chiêu nào cũng không trọn thì khó xài lắm.

Chú thích: ở bài #13 tôi có nhắc về sự kiện. Nhưng đó chỉ là nhắc khéo thôi; hai cái đều gây sự kiện như nhau. Thật ra thì chúng có điểm khác nhau khá quan trọng.
Thực ra kiến thức về excel và VBA nó mênh mông quá và biến hóa khôn lường nên có điều kiện là tôi hỏi cặn kẽ các trường hợp có thể ... để nếu hay thì học, áp dụng . Dở thì biết để tránh ...
 
Upvote 0
Nếu bạn đặt một cái sub worksheet_activate và một cái worksheet_selectionchange vào sheet B sẽ thấy:
Application.GoTo gây ra sự kiện selectionchange rồi mới đến activate
Activate + Select, đương nhiên, gây ra activate rồi mới selectionchange
(sự kiện selectionchange chỉ xảy ra khi ô chọn ở sheet thay đổi)

Điều này rất quan trọng vì nếu bạn có code ở mấy sự kiện thì phải biết sự kiện nào xảy ra trước.

Điều thứ hai, kém quan trọng, nên bạn biết cũng được mà không cũng chả sao:
Application.GoTo có ghi lại một mảng PreviousSelections. Nếu cần, bạn có thể truy mảng này để biết selection trước đó. Lệnh Select không ghi lại.
 
Upvote 0

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

Back
Top Bottom