Một câu hỏi mà tôi thường nghe từ các thành viên mới của Khóa học VBA Pro của chúng tôi là, “Sự khác biệt giữa Chọn và Kích hoạt là gì? Show
Câu trả lời ngắn gọn là Chọn và Kích hoạt có thể thực hiện cùng một hành động, nhưng sự khác biệt là
Hãy xem một ví dụ để xem nó hoạt động như thế nào Tôi nên sử dụng phương pháp nào?Đầu tiên, điều quan trọng cần lưu ý là cả hai phương pháp đều có thể được sử dụng trên nhiều loại đối tượng khác nhau trong Excel. Điều này bao gồm trang tính, phạm vi, ô, hình dạng, biểu đồ, bộ cắt, v.v. Chúng tôi sẽ sử dụng trang tính trong ví dụ này Trường hợp sử dụng cho từng phương pháp phụ thuộc vào kịch bản. Và như tôi giải thích bên dưới, tốt nhất là không nên sử dụng. 😲 Khi nào nên sử dụng Phương pháp ChọnPhương thức Select thường là phương thức chúng ta quen thuộc nhất vì trình ghi macro sử dụng nó khi tạo mã Chọn cho phép chúng ta chọn một đối tượng HOẶC nhiều đối tượng Dòng mã VBA sau đây chọn một trang tính Worksheets("Sheet2").Select Chúng ta cũng có thể sử dụng Select để chọn nhiều đối tượng. Dưới đây là một ví dụ về việc chọn nhiều phạm vi Range("A1:B10,D1:F10,J1:K10").Select Dưới đây là một ví dụ về việc chọn nhiều trang tính. Hàm Array dùng để tham chiếu các sheet. Kỹ thuật tương tự này có thể được sử dụng cho các hình dạng Worksheets(Array("Sheet2", "Sheet3", "Sheet5")).Select Khi dòng mã đó được chạy, mục đầu tiên trong mảng được kích hoạt. Điều đó có nghĩa là Sheet2 sẽ là trang tính hoạt động mà người dùng nhìn thấy Điều gì sẽ xảy ra nếu chúng ta muốn giữ ba trang tính được chọn, nhưng thay vào đó, người dùng xem Trang tính 3 thì sao? Khi nào nên sử dụng Phương thức kích hoạtPhương thức Kích hoạt cho phép chúng ta chọn một đối tượng duy nhất. Đây có thể là một đối tượng trong một vùng chọn, nếu nhiều đối tượng đã được chọn Các dòng sau sẽ chọn ba trang tính, sau đó đặt Trang 3 thành trang hoạt động mà người dùng nhìn thấy Worksheets(Array("Sheet2", "Sheet3", "Sheet5")).Select Nếu bạn không chọn một nhóm đối tượng nào thì Kích hoạt sẽ chỉ chọn một đối tượng duy nhất. Nó KHÔNG thêm vào lựa chọn hiện tại và sẽ hoạt động giống như cách Select hoạt động. Hãy cẩn thận với kích hoạtBạn có thể không phải lúc nào cũng biết đối tượng nào được chọn trong sổ làm việc. Do đó, không phải lúc nào bạn cũng có thể sử dụng Kích hoạt để chọn một đối tượng Ví dụ: giả sử bạn có một dòng mã trong macro để kích hoạt Trang tính 1 Nếu người dùng đã chọn Sheet1 đến Sheet3 trước khi chạy macro, thì cả ba trang tính sẽ vẫn được chọn. Bạn có thể không muốn điều này nếu dòng mã tiếp theo của bạn sửa đổi một ô trên Trang tính 1. Tùy thuộc vào cách viết mã, cả ba trang tính có thể bị sửa đổi, gây ra kết quả không mong muốn. 😬 Nếu bạn kích hoạt một đối tượng KHÔNG có trong vùng chọn, thì đối tượng đơn lẻ đó sẽ được chọn và các đối tượng đã chọn trước đó sẽ không còn được chọn nữa. Ví dụ: nếu người dùng đã chọn Sheet1 đến Sheet3 và mã của bạn kích hoạt Sheet4, thì chỉ Sheet4 sẽ được chọn Điểm nổi bật chính ở đây là có rất nhiều kết quả không mong muốn tiềm ẩn khi sử dụng Kích hoạt để chọn một đối tượng. Vì vậy, tốt nhất là sử dụng Chọn để chọn các đối tượng đơn lẻ Kích hoạt cho Sổ làm việcPhương thức Kích hoạt cũng được sử dụng khi kích hoạt Workbook và Windows. Không có phương thức Chọn cho các đối tượng này ThisWorkbook.Activate Tránh chọn và kích hoạt bất cứ khi nào có thểThật tuyệt khi biết sự khác biệt giữa hai phương pháp này, nhưng bạn có thể không cần đến chúng thường xuyên như bạn nghĩ. Đặc biệt nếu bạn mới bắt đầu với VBA và sử dụng trình ghi macro rất nhiều Mã trình ghi macro chứa rất nhiều dòng với phương thức Chọn vì nó đang tạo mã cho mọi hành động chúng tôi thực hiện. Tuy nhiên, chúng ta KHÔNG cần chọn một đối tượng trước khi thực hiện các hành động trên đó. Điều này có thể làm chậm mã của chúng tôi và làm cho mã dễ bị lỗi hơn Đây là một bài viết về Cách tránh phương thức chọn trong VBA và tại sao điều đó giải thích thêm Phần kết luậnTốt nhất nên sử dụng Select khi bạn muốn chọn một đối tượng hoặc nhiều đối tượng. Kích hoạt nên được sử dụng khi bạn muốn kích hoạt (xem/chọn) một đối tượng trong một lựa chọn hiện có. Kích hoạt cũng được sử dụng để chọn Sổ làm việc, vì không có phương thức Chọn cho đối tượng đó Tôi đã bỏ lỡ bất cứ điều gì? . Cảm ơn bạn. 🙂 Trước đó Cách bỏ ẩn và ẩn nhiều trang tính trong Excel Tiếp theo Chuyển đổi văn bản thành giá trị thời gian bằng UDF trong VBA Bạn cũng có thể thíchCách tìm kiếm danh sách thả xuống xác thực dữ liệu trong ExcelChuyển đến ô nguồn của công thức XLOOKUP3 cách để điền vào các ô trống trong ExcelMacro VBA để tạo kết nối truy vấn nguồn cho tất cả các bảng ExcelTháng Bảy 26, 2019 tại 6. 13 giờ sáng Có lẽ tôi sẽ không bao giờ tìm kiếm câu trả lời cho câu hỏi này, nhưng bạn đã đề cập đến một chủ đề thuộc một trong số đó là "tại sao có hai phương pháp dường như làm cùng một việc?" . Lời giải thích tuyệt vời ở chỗ trước đây nó hơi khó hiểu, nhưng bây giờ tôi đã hiểu rõ hơn về nó Cũng cảm ơn vì đã nhấn mạnh việc không phải chọn một đối tượng trước khi làm điều gì đó với nó. Nó giúp gỡ lỗi, vì vậy hãy xem điều gì đang thực sự xảy ra, nhưng một khi nó hoạt động, chúng ta có thể loại bỏ một số hoặc tất cả các câu lệnh Chọn Hồi đáp
Tháng Bảy 26, 2019 lúc 9. 33 giờ sáng Hi Jon, Tôi đã biết về sự thiếu hiệu quả của việc sử dụng Chọn trong một thời gian dài, nhưng tôi phải thừa nhận rằng tôi đã không thực sự suy nghĩ nhiều về Kích hoạt Cảm ơn bạn đã làm rõ Hồi đáp
Tháng Bảy 26, 2019 lúc 10. 16 giờ sáng Thông tin tuyệt vời…☺ Hồi đáp
Tháng Bảy 28, 2019 tại 12. 44 giờ sáng cám ơn vì đã giải thích Hồi đáp Tháng Bảy 29, 2019 tại 10. 34 giờ sáng Cảm ơn bạn rất nhiều, Jon. Mặc dù đã làm việc với Excel nhiều năm nhưng bạn vẫn tiếp tục dạy chúng tôi những điều mới Hồi đáp Tháng Tám 1, 2019 tại 2. 53 giờ chiều Cảm ơn Jon. Luôn luôn tốt để học một cái gì đó mới và bạn làm cho nó xảy ra Hồi đáp
5 tháng 11, 2019 lúc 10. 35 giờ chiều Sự khác biệt giữa chọn là bạn có thể chọn nhiều đối tượng cùng một lúc. Các đối tượng được chọn cũng được đặt trong đối tượng Lựa chọn mà bạn có thể sử dụng các phương thức trên. Trừ khi bạn đang chọn nhiều đối tượng, việc chọn (giả sử một ô) sẽ kích hoạt đối tượng Hồi đáp 26 Tháng Mười Hai, 2019 lúc 1. 38 giờ tối Nhận thấy rằng tôi có thể sử dụng 'Kích hoạt' để chạy các thay đổi mong muốn trên một trang tính bị ẩn (không hiện trang tính đó), trong khi mã tương tự có lỗi 'Chọn' (trừ khi tôi bỏ ẩn trang tính trước). Nghĩ rằng thật thú vị khi đề cập đến. Không chắc có những thứ khác đang chơi hay không, nhưng với mục đích của tôi, tôi phải sử dụng 'Kích hoạt' so với. Lựa chọn Hồi đáp 4 Tháng Tư, 2020 tại 4. 11 giờ sáng Đầu tiên, điều quan trọng cần lưu ý là cả hai phương pháp đều có thể được sử dụng trên nhiều loại đối tượng khác nhau trong Excel. Tuyệt quá Hồi đáp 4 Tháng Tư, 2020 tại 10. 16 giờ sáng Bài cảm ơn Hồi đáp 14 Tháng Năm, 2021 tại 4. 41 giờ sáng Office 365 trong sheet1 Tôi sử dụng sheet(“sheet2”). chọn vì tôi muốn lấy giá trị của lựa chọn. hàng trong sheet2 để thực hiện một số hành động nhất định. Tuy nhiên, khi ở cuối trang phụ 2 được hiển thị khi tôi muốn hiển thị trang 1. Hồi đáp 17 Tháng Năm, 2021 tại 9. 50 giờ sáng Cảm ơn bạn. Điều đó khá hữu ích. Giải thích rõ ràng và ngắn gọn mà tôi là một người mới hoàn toàn có thể hiểu được Hồi đáp 9 Tháng Ba, 2022 tại 11. 55 giờ sáng Sự phân tích của bạn về sự tinh tế của VBA thật tuyệt vời. Không có nhiều điều rườm rà, bạn bắt tay ngay vào vấn đề, xác định thách thức/vấn đề và theo đuổi một tiến trình hợp lý tốt đẹp để giải quyết. Tôi rất trân trọng điều này |