Kích hoạt trang tính VBA

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ì?

Kích hoạt trang tính VBA

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à

  • Chọn có thể được sử dụng để chọn nhiều đối tượng (trang tính, phạm vi, hình dạng, v.v. ) đồng thời
  • Kích hoạt có thể được sử dụng để kích hoạt một đối tượng trong vùng chọn

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ọn

Phươ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

Kích hoạt trang tính VBA

Đ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ạt

Phươ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

Worksheets("Sheet3").Activate
Kích hoạt trang tính VBA

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ạt

Bạ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ệc

Phươ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

Workbooks("Book3.xlsx").Activate

Windows("Book3.xlsx").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

Kích hoạt trang tính VBA

Đâ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ận

Tố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ích

Kích hoạt trang tính VBA

Cách tìm kiếm danh sách thả xuống xác thực dữ liệu trong Excel

Kích hoạt trang tính VBA

Chuyển đến ô nguồn của công thức XLOOKUP

Kích hoạt trang tính VBA

3 cách để điền vào các ô trống trong Excel

Kích hoạt trang tính VBA

Macro VBA để tạo kết nối truy vấn nguồn cho tất cả các bảng Excel

  • Kích hoạt trang tính VBA
    Patrick Schommer nói.

    Thá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

    • Kích hoạt trang tính VBA
      Jon Acampora nói.

      Tháng Bảy 26, 2019 tại 11. 27 giờ sáng

      Cảm ơn Patrick. Và điểm tuyệt vời về việc chọn đối tượng trong quá trình gỡ lỗi. Điều này đặc biệt đúng đối với các trang tính và sổ làm việc, khi bạn có thể muốn xem mã đang làm gì khi bạn duyệt qua nó bằng phím F8

      Cảm ơn một lần nữa và chúc cuối tuần vui vẻ. 🙂

      Hồi đáp

  • Kích hoạt trang tính VBA
    Bill Palmer nói.

    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

    • Jon Acampora nói.

      Tháng Bảy 26, 2019 tại 11. 27 giờ sáng

      cảm ơn hóa đơn. 🙂

      Hồi đáp

  • Kích hoạt trang tính VBA
    Sam Sammito nói.

    Tháng Bảy 26, 2019 lúc 10. 16 giờ sáng

    Thông tin tuyệt vời…☺
    Cảm ơn

    Hồi đáp

    • Jon Acampora nói.

      Tháng Bảy 26, 2019 tại 11. 27 giờ sáng

      Cảm ơn Sam. 🙂

      Hồi đáp

  • Kích hoạt trang tính VBA
    Jan nói.

    Tháng Bảy 28, 2019 tại 12. 44 giờ sáng

    cám ơn vì đã giải thích

    Hồi đáp

  • Kích hoạt trang tính VBA
    Mickael nói.

    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

  • Kích hoạt trang tính VBA
    Vivian Zhou nói.

    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

    • Jon Acampora nói.

      Tháng Tám 1, 2019 tại 2. 57 giờ chiều

      Cảm ơn Vivian. tôi đánh giá cao sự hỗ trợ của bạn. 🙂

      Hồi đáp

  • Kích hoạt trang tính VBA
    tính chất tốt nhất. com nói.

    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

  • Kích hoạt trang tính VBA
    Yelena Arnaut nói.

    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

  • Kích hoạt trang tính VBA
    nhạc chuông mới nhất. mobi nói.

    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

  • Kích hoạt trang tính VBA
    Cưng nói.

    4 Tháng Tư, 2020 tại 10. 16 giờ sáng

    Bài cảm ơn
    Đó là một thông tin hữu ích

    Hồi đáp

  • Kích hoạt trang tính VBA
    Ông Baker nói.

    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.
    Tôi đã thử trang tính(“sheet1”). chọn và. kích hoạt cả hai đều bị lỗi vĩnh viễn và tôi không thể quay lại trang 1 cho đến khi hết vba và tôi phải chọn lại trang 1.

    Hồi đáp

  • Kích hoạt trang tính VBA
    Steve nói.

    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

  • Kích hoạt trang tính VBA
    SteveT nói.

    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