Đối tượng phạm vi Excel VBA

⚡ Tóm tắt thông minh

Đối tượng Range trong Excel VBA đại diện cho một ô hoặc một nhóm ô trên bảng tính. Trang này giải thích về cấu trúc phân cấp của đối tượng, các thuộc tính Range và Cells, cách chọn và tham chiếu ô, đọc và ghi giá trị, cũng như thuộc tính Offset.

  • 🎯 Định nghĩa: Đối tượng Range trỏ đến một ô đơn, một hàng, một cột, một vùng chọn hoặc một phạm vi 3 chiều.
  • 🧬 Hệ thống cấp bậc: Một tài liệu tham khảo đủ điều kiện sẽ đọc theo thứ tự: Ứng dụng, Sách bài tập, Phiếu bài tập, sau đó là Phạm vi.
  • 🏷️ Tính chất và phương pháp: Thuộc tính lưu trữ thông tin về đối tượng, còn phương thức thực hiện một hành động như Chọn hoặc Hợp nhất.
  • 🔢 Thuộc tính của tế bào: Cells(Row, Column) truy cập vào một ô theo số thứ tự, điều này phù hợp với vòng lặp lập trình.
  • 🇧🇷 Đọc và viết: Thuộc tính Value vừa truy xuất nội dung của ô vừa ghi lại nội dung mới.
  • ↔️ Tài sản bù trừ: Lệnh Offset di chuyển một tham chiếu một số hàng và cột nhất định so với ô bắt đầu của nó.

Đối tượng phạm vi Excel VBA

Phạm vi VBA là gì?

Đối tượng Phạm vi VBA đại diện cho một ô hoặc nhiều ô trong bảng tính Excel của bạn. Đây là đối tượng quan trọng nhất của Excel VBA. Bằng cách sử dụng đối tượng phạm vi Excel VBA, bạn có thể tham khảo,

  • Một tế bào duy nhất
  • Một hàng hoặc một cột ô
  • Lựa chọn các ô
  • Phạm vi 3-D

Như chúng ta đã thảo luận trong bài hướng dẫn trước, VBA được sử dụng để ghi lại và chạy một... MacroNhưng làm thế nào VBA xác định được dữ liệu nào trên trang tính cần được xử lý? Đây chính là lúc các đối tượng Range trong VBA phát huy tác dụng.

Giới thiệu về đối tượng tham chiếu trong VBA

Tham khảo Đối tượng phạm vi VBA của Excel và Bộ định tính đối tượng.

  • Vòng loại đối tượng: Điều này được sử dụng để tham chiếu đối tượng. Nó chỉ định sổ làm việc hoặc trang tính mà bạn đang đề cập đến.

Để thao tác các giá trị ô này, Bất động sảnPhương pháp được sử dụng.

  • Bất động sản: Một thuộc tính lưu trữ thông tin về đối tượng.
  • Phương pháp: Một phương thức là một hành động của đối tượng mà nó sẽ thực hiện. Đối tượng phạm vi có thể thực hiện các hành động như chọn, sao chép, xóa, sắp xếp, v.v.

VBA tuân theo mô hình phân cấp đối tượng để tham chiếu đến một đối tượng trong Excel. Bạn phải tuân theo cấu trúc bên dưới. Hãy nhớ rằng, dấu chấm (.) ở đây kết nối đối tượng ở mỗi cấp độ khác nhau.

Application.Workbooks.Worksheets.Range

Cấu trúc phân cấp đó có thể đạt được thông qua hai thuộc tính khác nhau, và thuộc tính Range là thuộc tính được sử dụng thường xuyên nhất.

Cách tham chiếu đến Đối tượng Phạm vi VBA của Excel bằng thuộc tính Phạm vi

Thuộc tính phạm vi có thể được áp dụng trong hai loại đối tượng khác nhau.

  • Đối tượng bảng tính
  • Đối tượng phạm vi

Cú pháp cho thuộc tính phạm vi

  1. Từ khóa “Phạm vi”.
  2. Dấu ngoặc đơn theo sau từ khóa
  3. Phạm vi ô có liên quan
  4. Trích dẫn (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

Khi bạn tham chiếu đối tượng Range, như được hiển thị ở trên, nó được gọi là tài liệu tham khảo đầy đủBạn đã cho Excel biết chính xác phạm vi nào bạn muốn, trang tính nào và trong bảng tính nào.

Ví dụ: Tin nhắnBox Worksheets(“Sheet1”).Range(“A1”).Value

Sử dụng thuộc tính Range, bạn có thể thực hiện nhiều tác vụ như,

  • Tham khảo một ô bằng cách sử dụng thuộc tính phạm vi
  • Tham chiếu đến một ô bằng cách sử dụng thuộc tính Worksheet.Range
  • Tham khảo toàn bộ hàng hoặc cột
  • Tham khảo các ô đã hợp nhất bằng Thuộc tính Worksheet.Range và nhiều hơn nữa

Vì vậy, sẽ quá dài để đề cập đến tất cả các kịch bản đối với thuộc tính phạm vi. Đối với các kịch bản được đề cập ở trên, chúng tôi sẽ chỉ minh họa một ví dụ cho một trường hợp. Tham khảo một ô đơn bằng cách sử dụng thuộc tính phạm vi.

Tham chiếu đến một ô bằng cách sử dụng thuộc tính Worksheet.Range

Để tham chiếu đến một ô cụ thể, hãy truyền địa chỉ của ô đó vào thuộc tính Range dưới dạng chuỗi văn bản.

Cú pháp rất đơn giản “Phạm vi (“Ô”)”.

Ở đây, chúng ta sẽ sử dụng lệnh “.Select” để chọn một ô từ trang tính.

Bước 1) Ở bước này, hãy mở Excel của bạn.

Ô đơn sử dụng thuộc tính Worksheet.Range

Bước 2) Trong bước này,

  • Nhấp vào Ô đơn sử dụng thuộc tính Worksheet.Range .
  • Nó sẽ mở một cửa sổ.
  • Nhập tên chương trình của bạn vào đây và nhấp vào nút 'OK'.
  • Nó sẽ đưa bạn đến tệp Excel chính, từ menu trên cùng, nhấp vào nút 'dừng' ghi để dừng ghi Macro.

Ô đơn sử dụng thuộc tính Worksheet.Range

Bước 3) Ở bước tiếp theo,

  • Bấm vào nút Macro Ô đơn sử dụng thuộc tính Worksheet.Range từ menu trên cùng. Nó sẽ mở cửa sổ bên dưới.
  • Trong cửa sổ này, nhấp vào nút 'chỉnh sửa'.

Ô đơn sử dụng thuộc tính Worksheet.Range

Bước 4) Bước trên sẽ mở trình soạn thảo mã VBA cho tệp có tên “Single Cell Range”. Nhập mã như hình bên dưới để chọn phạm vi “A1” từ trang tính Excel.

Sub SingleCellRange()
    Range("A1").Select
End Sub

Ô đơn sử dụng thuộc tính Worksheet.Range

Bước 5) Bây giờ hãy lưu tập tin Ô đơn sử dụng thuộc tính Worksheet.Range và chạy chương trình như hình dưới đây.

Ô đơn sử dụng thuộc tính Worksheet.Range

Bước 6) Bạn sẽ thấy Ô “A1” được chọn sau khi thực hiện chương trình.

Ô đơn sử dụng thuộc tính Worksheet.Range

Tương tự, bạn có thể chọn một ô có Tên cụ thể. Ví dụ, nếu bạn muốn tìm kiếm ô có tên “Guru99- Hướng dẫn VBA”. Bạn phải chạy lệnh như hình bên dưới. Nó sẽ chọn ô có tên đó.

Phạm vi("Guru99- Hướng dẫn VBA).Chọn

Để áp dụng đối tượng phạm vi khác ở đây là mẫu mã.

Phạm vi chọn ô trong Excel Phạm vi được khai báo
Đối với hàng đơn Phạm vi(“1:1”)
Đối với cột đơn Phạm vi (“A:A”)
Đối với các ô liền kề Phạm vi(“A1:C5”)
Đối với các ô không liền kề Phạm vi(“A1:C5, F1:F5”)
Đối với giao điểm của hai phạm vi Phạm vi(“A1:C5 F1:F5”)
(Đối với ô giao nhau, hãy nhớ không có toán tử dấu phẩy)
Để hợp nhất ô Phạm vi(“A1:C5”)
(Để gộp ô sử dụng lệnh “merge”)

Việc chọn một ô chỉ là bước đầu tiên. Trên thực tế, macro sẽ đọc nội dung của ô đó và ghi lại một giá trị mới.

Cách đọc và ghi giá trị bằng đối tượng Range

Hầu hết các macro thao tác với bảng tính đều thực hiện một trong hai việc: đọc giá trị từ một ô hoặc ghi giá trị vào ô đó. Cả hai đều sử dụng thuộc tính Value và không cần phải chọn ô trước.

Sub ReadAndWrite()
    Dim Price As Double
    Dim Qty As Long

    ' Read two values out of the sheet
    Price = Range("B1").Value
    Qty = Range("B2").Value

    ' Write the calculated result back
    Range("B3").Value = Price * Qty

    ' Fill a whole block in one statement
    Range("D1:D10").Value = "Guru99"

    ' Clear only the contents, keeping the formatting
    Range("F1:F10").ClearContents
End Sub

Bốn điểm này làm cho mô hình trở nên đáng tin cậy.

  • Việc chọn không bắt buộc: Writing Range(“B3”).Value = 10 Thao tác này nhanh hơn và an toàn hơn so với việc chọn ô trước. Các macro được ghi lại chứa đầy lệnh .Select vì trình ghi mô phỏng các thao tác chuột, chứ không phải vì mã cần đến nó.
  • Giá trị so với nội dung: .Value trả về dữ liệu gốc, trong khi .Text trả về chuỗi được định dạng hiển thị trên màn hình, có thể bị cắt ngắn theo chiều rộng cột. Hãy đọc .Value trong các phép tính.
  • Toàn bộ các khối nằm trên cùng một dòng: Việc gán vào một vùng nhiều ô sẽ điền dữ liệu vào tất cả các ô cùng một lúc, nhanh hơn nhiều so với việc tìm kiếm thủ công.ping.
  • Hãy làm rõ điều đúng đắn: ClearContents chỉ xóa nội dung, Clear xóa cả định dạng, còn Delete xóa các ô và di chuyển các ô xung quanh.

Thuộc tính `Range` truy cập một ô bằng chữ cái và số của nó. Thuộc tính `second` truy cập cùng một ô bằng hai số thay vì chữ cái và số.

Thuộc tính ô

Tương tự với phạm vi, trong VBA Bạn cũng có thể sử dụng "Thuộc tính ô". Điểm khác biệt duy nhất là nó có thuộc tính "mục" mà bạn sử dụng để tham chiếu đến các ô trên bảng tính của mình. Thuộc tính ô rất hữu ích trong vòng lặp lập trình.

Ví dụ,

Cells.item(Row, Column). Cả hai dòng dưới đây đều tham chiếu đến ô A1.

  • Cells.item(1,1) HOẶC
  • Cells.item(1,”A”)

Sự khác biệt giữa phạm vi và ô trong VBA

Phạm vi (Range) và ô (Cells) truy cập cùng một ô trong bảng tính bằng các đường dẫn khác nhau, và việc lựa chọn đúng sẽ giúp mã ngắn gọn và dễ đọc hơn.

Điểm khác biệt Phạm vi Tế bào
Định dạng địa chỉ Một chuỗi văn bản, Range(“A1”) Hai số, Ô (1, 1)
Nhiều tế bào Vâng, Phạm vi (“A1:C5”) Từng tế bào một
Bên trong một vòng lặp Cần nối chuỗi Số thứ tự hàng có thể là bộ đếm vòng lặp
Dễ đọc Địa chỉ này trùng khớp với địa chỉ bạn thấy trong Excel. Cột 27 khó hình dung hơn cột AA.
Sử dụng kết hợp Range(Cells(1, 1), Cells(5, 3)) xây dựng A1:C5 từ các số

Nguyên tắc thực tế là sử dụng Range cho một địa chỉ cố định mà bạn có thể dễ dàng đọc nhanh, và sử dụng Cells bất cứ khi nào số hàng hoặc số cột được tính toán trong quá trình chạy chương trình.

Thuộc tính bù phạm vi

Thuộc tính bù phạm vi sẽ chọn các hàng/cột cách xa vị trí ban đầu. Trên cơ sở phạm vi được khai báo, các ô được chọn. Xem ví dụ dưới đây.

Ví dụ,

Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select

Kết quả sẽ là ô B2. Thuộc tính offset sẽ di chuyển ô A1 đi 1 cột và 1 hàng. Bạn có thể thay đổi giá trị của RowOffset / ColumnOffset theo yêu cầu. Bạn có thể sử dụng giá trị âm (-1) để di chuyển các ô về phía sau.

Tải xuống Excel chứa mã ở trên

Tải xuống tệp Excel ở trên Code

Câu Hỏi Thường Gặp

Sử dụng Cells(Rows.Count, 1).End(xlUp).Row. Nó bắt đầu từ cuối cột A và nhảy lên ô cuối cùng chứa dữ liệu, đáng tin cậy hơn UsedRange sau khi các hàng đã bị xóa.

Mọi thao tác đọc hoặc ghi đều liên quan đến VBA và Excel. Hãy tải phạm vi dữ liệu vào một mảng bằng một phép gán duy nhất, xử lý mảng đó trong bộ nhớ, sau đó ghi lại kết quả bằng một câu lệnh khác. Tắt ScreenUpdating cũng giúp ích.

Thông thường, đó có thể là địa chỉ không hợp lệ, tên trang tính không tồn tại hoặc cố gắng chọn một vùng trên trang tính không hoạt động. Hãy chỉ định rõ tham chiếu đến trang tính hoặc kích hoạt trang tính trước.

Vâng. Dán đoạn mã đã ghi lại và trợ lý AI sẽ thay thế từng cặp Select và Selection bằng tham chiếu Range trực tiếp, đầy đủ thông tin. Chạy cả hai phiên bản trên một bản sao và so sánh bảng tính trước khi giữ lại.ping sự thay đổi.

Đúng vậy. Hãy mô tả mục tiêu, ví dụ như mọi hàng đã được điền đầy đủ trong các cột A đến D trên trang tính Dữ liệu, và trợ lý AI sẽ trả về biểu thức Phạm vi phù hợp. Hãy xác minh nó với một mẫu nhỏ trước khi chạy trên dữ liệu thực.

Tóm tắt bài viết này với: