Xu Hướng 6/2023 # Viết Code Với Đối Tượng Range Trong Vba Excel Đơn Giản Nhất # Top 9 View | Hoisinhvienqnam.edu.vn

Xu Hướng 6/2023 # Viết Code Với Đối Tượng Range Trong Vba Excel Đơn Giản Nhất # Top 9 View

Bạn đang xem bài viết Viết Code Với Đối Tượng Range Trong Vba Excel Đơn Giản Nhất được cập nhật mới nhất trên website Hoisinhvienqnam.edu.vn. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất.

Cách viết đối tượng Range trong VBA

Range được hiểu là 1 ô hoặc 1 vùng ô trong Excel. Trong VBA có 2 dạng biểu diễn đối tượng Range:

Dạng thứ 1: Range cố định địa chỉ (hay đã xác định cụ thể tọa độ)

Khi muốn biểu diễn 1 vùng ô mà bạn đã xác định rõ tọa độ của các dòng, cột trong vùng ô đó thì bạn có thể viết theo các cách sau:

Bạn có thể viết Range chỉ với 1 ô hoặc nhiều ô, trong đó các vùng ô có thể liên tiếp nhau hoặc tách rời nhau.

Bạn có thể viết Range dựa theo ô ở điểm đầu và ô ở điểm cuối (Range dựa vào Cells để viết)

Dạng thứ 2: Range không cố định địa chỉ

Khi bạn chưa xác định rõ được vùng cần làm việc là vùng nào, dòng bao nhiêu, cột bao nhiêu bởi vùng đó có thể thay đổi trong quá trình làm việc thì bạn phải thông qua các biến. Mỗi khi câu lệnh hoạt động thì biến đó sẽ nhận 1 giá trị, Căn cứ vào giá trị đó để xác định vùng ô mà bạn muốn làm việc.

Cách viết như sau:

Khi viết dạng này, thường chỉ xác định cho 1 ô hoặc 1 vùng ô liên tiếp nhau. Chúng ta chỉ dùng 1 cách viết giống như cách viết thứ 1 của dạng Range cố định địa chỉ vì đây là cách dễ viết nhất, thông dụng nhất trong VBA.

Một số phương thức, thuộc tính của Range thường sử dụng trong VBA

Vì Range là đối tượng thường sử dụng trong lập trình VBA nên có rất nhiều phương thức, thuộc tính được sử dụng. Một số cú pháp gọi thuộc tính tiêu biểu là:

Một số ví dụ minh họa về ứng dụng của Range trong lập trình VBA

Ví dụ thứ 1: Chọn vùng ô A2:D2

Range(“A2:D2”).Select

[A2:D2].Select

Ví dụ thứ 2: Gán giá trị vào 1 vùng ô

Range(“A1”).Value = “abc”

Có nghĩa là gán vào ô A1 đoạn text là abc

Range(“A2:A5”).Value = Range(“B2:B5”).Value

Có nghĩa là lấy giá trị vào vùng A2:A5 tương ứng theo giá trị vùng B2:B5

Range(“D5”).Formula = “=COUNTIF(D1:D4,””abc””)”

Có nghĩa là gán vào ô D5 công thức =COUNTIF(D1:D4,”abc”)

Ví dụ thứ 3: Ẩn dòng, cột

Range(“A1:A5”).EntireRow.Hidden = True

Có nghĩa là ẩn từ dòng 1 đến dòng 5

Range(“A1:F1”).EntireColumn.Hidden = False

Có nghĩa là bỏ ẩn từ cột A tới cột F

Ví dụ thứ 4: Xóa dữ liệu, xóa ô, xóa dòng, cột

Range(“A1:F10”).ClearContents

Có nghĩa là chỉ xóa dữ liệu trong vùng A1:F10

Range(“A1:F10”).Clear

Có nghĩa là xóa toàn bộ dữ liệu và định dạng trong vùng A1:F10

Range(“A2:A5”).Delete

Có nghĩa là xóa toàn bộ các ô trong vùng A2:A5

Range(“A2:A5”).EntireRow.Delete

Có nghĩa là xóa toàn bộ các dòng từ dòng 2 tới dòng 5

Range chỉ là 1 đối tượng nhỏ nằm trong đối tượng lớn hơn là các Worksheet, Workbook. Do đó:

Khi không nói cụ thể thuộc Worksheet nào, Workbook nào thì chúng ta hiểu: Đó là Range thuộc ActiveSheet (Sheet đang được kích hoạt), Sheet này thuộc ActiveWorkbook (Workbook đang được kích hoạt)

Range(“A1”).ClearContents cũng chính là ActiveWorkbook.ActiveSheet. Range(“A1”).ClearContents

Trong khi đó nếu file Excel có nhiều Sheet, rất dễ xảy ra trường hợp ActiveSheet thay đổi liên tục trong quá trình chạy lệnh code, dẫn tới kết quả sai.

Trong trường hợp làm việc với nhiều Workbook cùng lúc, cũng rất dễ xảy ra việc ActiveWorkbook được thay đổi liên tục trong quá trình làm việc, dẫn tới kết quả chạy sai vị trí mong muốn.

Nếu muốn nói 1 Range thuộc 1 Sheet khác, cần nói cụ thể Sheet đó trước khi nhắc tới Range. Nếu muốn nhắc tới Sheet đó thuộc 1 Workbook khác, cần chỉ rõ tên Workbook.

Ví dụ:

Sheet5.Range(“A2:A5”).Select

Chọn vùng A2:A5 của Sheet5, trong Workbook đang làm việc

Workbook(“abc.xlsm”).Sheets(“VD”).Range(“A1”).Value = “123”

Gán giá trị 123 vào ô A1 trong Sheet có tên là VD, thuộc Workbook có tên là abc, loại file là xlsm

ThisWorkbook.Worksheets(1).Range(“VungDK”).ClearContents

Xóa dữ liệu trong vùng được đặt tên (Define Name) là VungDK, vùng này nằm trong Sheet có thứ tự là 1 của Workbook nơi đặt lệnh code.

Khi mới học lập trình VBA, chúng ta nên lưu ý viết đầy đủ cả Workbook và Worksheet khi làm việc với đối tượng Range. Trường hợp chỉ có duy nhất 1 Workbook thì nên viết cụ thể tên sheet chứa Range cần làm việc. Điều này sẽ giúp các bạn tránh nhầm lẫn, biết rõ vị trí kết quả, tránh trường hợp chạy câu lệnh bị sai vùng Range sang sheet khác.

Tìm hiểu sự khác nhau giữa các thuộc tính Text Value và Value2 của đối tượng Range trong VBA Hướng dẫn cách viết thuộc tính OFFSET của đối tượng Range trong VBA Excel Hướng dẫn cách viết thuộc tính RESIZE của đối tượng Range trong VBA Excel Hướng dẫn sử dụng vòng lặp For.. Next trong VBA Hướng dẫn cách sử dụng vòng lặp For Each trong VBA Excel

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…

Hướng Dẫn Cách Viết Code Với Đối Tượng Worksheet Trong Vba Excel

Phân biệt Name và Code Name của đối tượng Sheet trong VBA

Trong cửa sổ Project của VBA, chúng ta có thể thấy đối tượng Sheet gồm 2 phần là Code Name và Name. Cụ thể như sau:

Code Name là phần bên trái, không nằm trong ngoặc. Code Name chỉ thay đổi được khi đổi tên mục (Name) ở cửa sổ Properties trong VBA

Name là phần trong dấu ngoặc đơn. Đây chính là tên sheet được thể hiện trong thanh SheetTab trong Excel. Khi đổi tên Sheet trong SheetTab thì phần tên này sẽ thay đổi theo.

Cách viết đối tượng Worksheet trong VBA Đối tượng Worksheets hay Sheets

Chú ý trong đối tượng này, chữ Sheets có kèm theo chữ ” S “. Đây là sự khác biệt rất lớn, bởi việc viết có S hay không có S sẽ ảnh hưởng tới cấu trúc của câu lệnh code trong VBA.

Khi sử dụng đối tượng này, chúng ta phải nhập theo tên (Name) chứ không phải nhập theo CodeName.

Ví dụ:

Cách viết đúng (1 trong 2 cách):

Cách 1: Sheets(“01”).Select

Cách 2: ABC_01.Select (vì Sheet1 đã đổi thành ABC_01 nên ký tự ABC_01 chính là CodeName của Sheet)

Ngoài ra có thêm 1 cách viết khác là dùng số thứ tự của Sheet đó:

Thứ tự của Sheet chính là thứ tự của Sheet trên thẻ Sheet Tab của Excel theo chiều từ trái sang phải.

Thứ tự này không phụ thuộc vào tên Sheet, Code Name của Sheet hay thời gian khởi tạo Sheet.

Cách này thường áp dụng khi bạn biết rõ vị trí của Sheet cần làm việc trên thanh SheetTab mà không quan tâm tới tên Sheet.

Đối tượng Sheet

Khi viết đối tượng Sheet (không có chữ ” S“), chúng ta chỉ được phép sử dụng CodeName mà không được sử dụng Name.

Ngoài ra chúng ta có thể sử dụng thêm 1 đối tượng để gọi riêng Sheet đang hoạt động (đang được chọn, đang làm việc) là ActiveSheet (không có chữ S)

Như vậy chúng ta cần hết sức chú ý: Khi dùng cách gọi nào phải viết đúng theo cách viết của đối tượng đó. Nếu viết sai thì VBA sẽ báo lỗi không xác định được đối tượng (object)

Vì VBA là ngôn ngữ lập trình theo hướng đối tượng, do đó trong đối tượng Worksheet chúng ta có các phương thức sau:

Activate: Để kích hoạt một sheet

Ví dụ:

Sheets(“ABC”).Active ‘Kích hoạt Sheet có tên là ABC

Sheet1.Active ‘Kích hoạt Sheet có CodeName là Sheet1

Kích hoạt tức là chọn tới Sheet đó, đồng thời con trỏ chuột sẽ đặt tại 1 ô trong Sheet được kích hoạt.

Calculate: thực hiện việc tính toán tất cả các công thức có trong Sheet

Ví dụ:

Sheets(“ABC”).Calculate ‘Thực hiện tính toán các công thức trong Sheet có tên là ABC

Sheet1.Calculate ‘Thực hiện tính toán các công thức trong Sheet có CodeName là Sheet1

Copy: Sao chép 1 sheet

Việc copy 1 sheet có thể sao chép sheet đó thành 1 sheet mới nằm trong cùng 1 Workbook (tạo ra phiên bản copy) hoặc Copy ra 1 Workbook khác. Kèm theo đó là vị trí đặt Worksheet mới được copy đó. Nếu không quy định cụ thể ở vị trí nào thì sẽ mặc định là vị trí cuối cùng.

Việc gán vị trí sẽ quy định bởi tham số Before (ở trước) hoặc After (ở sau)

Sheets(“Tên sheet”).Copy ([Before], [After])

Sheets(Số thứ tự sheet).Copy ([Before], [After])

Ví dụ:

Worksheets(“Sheet2”).Copy Before:=Worksheets(1) ‘Sao chép sheet có tên là Sheet2 tới vị trí trước Sheet đầu tiên trong danh sách các Sheet

Delete: Xóa 1 sheet

Ví dụ:

Sheets(“MENU”).Delete ‘Xóa Sheet có tên là MENU

Khi xóa 1 Sheet, chúng ta có thể thấy Excel xuất hiện 1 thông báo yêu cầu xác nhận lại việc xóa này có được làm hay không. Nếu xác nhận lại là có thì Excel mới thực hiện việc Xóa Sheet.

Để bỏ thông báo đó mà luôn luôn cho phép xóa Sheet, chúng ta có thể kết hợp với câu lệnh không hiển thị thông báo của Excel như sau:

Sub XoaSheet()

Application.DisplayAlerts = False Sheet2.Delete Application.DisplayAlerts = True

Câu lệnh trên sẽ xóa Sheet có CodeName là Sheet2 mà không có bất kỳ thông báo nào.

Move: Di chuyển 1 sheet

Việc di chuyển Sheet cũng giống như khi chúng ta Copy, đó là phải chỉ định vị trí Sheet đó sẽ đi tới đâu, trước Sheet nào, hay sau Sheet nào, tại Workbook nào

Sheets(“Tên sheet”).Move ([Before], [After])

Select: Lựa chọn 1 sheet

Thao tác Select giống như Active, đó là lựa chọn sheet để kích hoạt Sheet.

Sự khác nhau cơ bản giữa Select với Active đó chính là: Chúng ta có thể lựa chọn (Select) cùng lúc nhiều Sheet, nhưng chỉ có duy nhất 1 Sheet được kích hoạt (Active)

Hy vọng rằng qua bài viết này các bạn đã có thể biết thêm nhiều kiến thức khi lập trình với đối tượng Sheet trong VBA.

Hướng dẫn cách viết code với đối tượng Workbook trong VBA Excel

Hướng Dẫn Về Đối Tượng Range Trong Vba Cơ Bản

Các đối tượng tham chiếu trong VBA Excel

Tham chiếu đối tượng Range và Qualifier, trong đó Qualifier dùng cho việc tham chiếu đối tượng (nghĩa là nó chỉ rõ bạn đang hướng theo workbook hay worksheet nào).

Để thao tác các giá trị này, bạn có thể dùng Properties (thuộc tính) và Methods (phương thức):

Property: chuỗi các thông tin thuộc tính của đối tượng

Method: là thao tác với đối tượng nào đó như selected (chọn 1 vùng ô), copied (sao chép vùng ô), cleared (xóa hoàn toàn dữu liệu và định dạng trong vùng ô), sorted (sắp xếp vùng),…

Sử dụng thuộc tính Range để tham chiếu đến đối tượng Range trong VBA Excel

Thuộc tính Range được áp dụng với 2 đối tượng:

Cú pháp của thuộc tính Range:

Gõ từ khóa “Range.”

Mở ngoặc đơn, ngoặc kép: (“…

Chọn vùng ô bạn muốn

Đóng ngoặc kép, ngoặc đơn: …”)

Câu lệnh của thuộc tính Range

Khi bạn nhập được cú pháp như trên thì được coi như là đủ điều kiện để tham chiếu. Bạn phải cho Excel biết chính xác vùng dữ liệu, sheet hay worksheet nào muốn dùng đến.

Ví dụ: MsgBox Worksheet("sheet1").Range("A1").Value

Ngoài ra, bạn có thể thực hiện được nhiều thao tác khác như:

Tham chiếu đến ô đơn bằng Range Property/Worksheet.Range Property

Tham chiếu đến toàn bộ hàng/cột

Tham chiếu vùng ô đã được hợp nhất thành 1 bằng Worksheet.Range Property và nhiều thao tác hơn nữa.

Nói chung, bạn có thể sử dụng thuộc tính Range trong rất nhiều trường hợp. Ví dụ như trường hợp ở trên là tham chiếu đến ô đơn bằng Range Property.

Tham chiếu đến ô đơn bằng Worksheet.Range Property

Cú pháp rất đơn giản: “Range(“Cell”)”.

Ở đây, ta sẽ dùng lệnh “Select” để chọn 1 range

Bước 1: Mở Excel, chọn ô A1

Chọn ô A1 trong Excel

Bước 2:

Nhấn nút

Lúc này, bạn đã quay lại màn hình chính của Excel

Từ thanh công cụ, nhấn “Stop recording“.

Nhập tên chương trình: “SingleCellRange” và nhấn OK

Bước 3:

Nhấn vào nút

Trong hộp thoại, nhấn “Edit”.

Bước 5: Bạn hãy lưu file

Bước 6: Lúc này, bạn sẽ thấy ô “A1” đã được chọn sau khi khởi chạy chương trình.

Tương tự như vậy, bạn cũng có thể chọn bất kì 1 hay nhiều vùng ô với tên riêng nào đó. Ví dụ, bạn muốn tìm kiếm ô có tên là “Blog Gitiho – Excel VBA”, bạn sẽ khởi lệnh như sau:

Range("Blog Gitiho - Excel VBA").Select

Thuộc tính Cell (Cell Property)

Ví dụ: với cú pháp Cells.item(Row, Column).Thì kết quả sẽ trả về ô A1 nếu nhập:

Thuộc tính Offset (Range Offset Property)

Với thuộc tính Offset, bạn có thể dễ dàng di chuyển cell bất kì theo hàng & cột đến vị trí khác (rời khỏi vị trí ban đầu của nó). Tùy vào cú pháp của Range mà sẽ cho ra cell được chọn.

Ví dụ về thuộc tính Offset

Ví dụ trên sẽ cho ra kết quả là ô B2. Bởi vì theo cú pháp thì ô A1 sẽ di chuyển sang phải 1 cột và hạ xuống 1 hàng. Bạn cũng có thể thay đổi giá trị bất kì của rowoffset & columnoffset, tất nhiên có thể dùng giá trị âm (-1;-2;…) nếu bạn muốn di chuyển ngược lại (sang trái & đi lên).

Trong lập trình VBA Excel, Range đại diện cho một ô, một hàng/cột, hoặc có thể là một vùng chọn của các ô, chứa một hay nhiều vùng ô kề nhau, hay 3-D range trong Worksheet.

Để thao tác với các dữ liệu, bạn có thể dùng Properties & Methods: * Property: chuỗi các thông tin thuộc tính của đối tượng * Method: là thao tác với đối tượng nào đó như selected (chọn 1 hay nhiều ô), copied (sao chép vùng ô), cleared (xóa hoàn toàn dữ liệu và định dạng trong vùng ô), sorted (sắp xếp vùng),…

VBA sử dụng dấu chấm (.) để tham chiếu đối tượng theo từng mức độ khác nhau.

Range Property có thể được áp dụng cho 2 đối tượng: * Worksheet* Range

Hướng Dẫn Viết Hàm Tính Quý Trong Năm Đơn Giản Với Vba

Trong bài viết này, chúng tôi sẽ hướng dẫn các bạn cách viết hàm trong VBA để xác định được quý trong năm một cách nhanh chóng và hiệu quả.

Ta đã biết thì với VBA ta có thể tạo được các Sub để thực hiện 1 thủ tục nào đó, hay Function để trả về 1 kết quả cụ thể.

Để tính quý trong VBA thì ta sẽ có hàm đơn giản như sau:

Function TinhQuy(NgayThang As Long) As StringTinhQuy = “Quy ” & WorksheetFunction.Choose(Month(NgayThang), 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4)End Function

Code trên thực ra là thay vì sử dụng hàm CHOOSE đó trên Excel thì ta sẽ mang vào trong VBA, và công thức để tính quý của ta chỉ cần truyền vào ngày tháng là kết quả sẽ trả về quý chính xác cho chúng ta, không còn phải lồng nhiều hàm ngoài Excel.

hướng dẫn cách thêm 1 lần nhiều sheet trong excel với code vba

Ngoài ra, nếu bạn không sử dụng hàm CHOOSE trên thì bạn có thể sử dụng cấu trúc IF để biện luận hay các cấu trúc khác như SELECT CASE,…

Hướng dẫn cách bật, tắt đường kẻ mờ trong Excel

Một số code vba để tìm dòng cuối cùng có dữ liệu trong excel

Các thủ thuật thêm bớt nhanh cột trong excel, hay và lạ

Với sứ mệnh: ” Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người “, đội ngũ phát triển đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án…

Gitiho tự hào khi được đồng hành cùng:

50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…

Cập nhật thông tin chi tiết về Viết Code Với Đối Tượng Range Trong Vba Excel Đơn Giản Nhất trên website Hoisinhvienqnam.edu.vn. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất. Chúc bạn một ngày tốt lành!