Bạn đang xem bài viết Excel Vba: Đối Tượng Range Trong Excel Vba đượ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.
Phần trước đã giới thiệu về tổng quan về Excel VBA, phần này xin giới thiệu với các bạn về một trong những đối tượng được sử dụng nhiều nhất trong khi tự động hóa bất kỳ tác vụ nào với VBA – Range.
Chúng ta tham chiếu đến các Range khác nhau trong một Worksheet và thực hiện các hoạt động khác nhau trên Range trong Excel. Chúng ta có các thuộc tính và các phương thức khác nhau để xử lý các đối tượng Range trong Excel. Đối tượng Range là đại diện của một cell (hoặc cells) trên Worksheet, là đối tượng quan trọng nhất của Excel VBA.
Ví dụ 1: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Range("B3").Value = 2Kết quả:
Ví dụ 2: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Range("A1:A4").Value = 88Kết quả:
Đối tượng Cells
Thay vì Range, bạn có thể sử dụng Cells. Sử dụng Cells đặc biệt hữu ích khi bạn muốn lặp qua các ranges.
Ví dụ 3: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Cells(3, 2).Value = 2Kết quả:
Ví dụ 4: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Range(Cells(1, 3), Cells(4, 3)).Value = 11Kết quả:
Bạn có thể khai báo một đối tượng Range bằng cách sử dụng các từ khoá Dim và Set.
Sub buttoRange1() Dim rangeObj As Range Set rangeObj = Range("B1:E4") rangeObj.Value = 8 End SubKết quả:
Phương thức Select
Một phương pháp quan trọng của đối tượng Range là phương thức Select. Phương thức Select được sử dụng để chọn một range. Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj.SelectKết quả:
Lưu ý: Để chọn các ô trên một Worksheet khác, bạn phải kích hoạt Worksheet này trước. Ví dụ, các dòng code sau đây chọn ô B7 trên Worksheet thứ ba từ bên trái.
Worksheets(3).Activate Worksheets(3).Range("B7").SelectPhương thức Copy/Paste
Phương thức Copy và Paste sử dụng để sao chép một dãy và dán nó vào một nơi khác trên Worksheet.
Ví dụ:
Range("B1:B2").Select chúng tôi Range("D3").Select ActiveSheet.PasteKết quả:
Range("C3:C4").Value = Range("A1:A2").Value ActiveSheet.PastePhương thức ClearContents
Phương thức ClearContents được sử dụng để chỉ xóa nội dung của một Excel Range.
Ví dụ:
Range("A1").ClearContentsHoặc đơn giản hơn bằng cách sử dụng code sau:
Range("A1").Value = ""
Phương thức ClearFormats
Phương thức ClearFormats được sử dụng để chỉ xóa định dạng của một Excel Range.
Phương thức Clear
Phương thức Clear được sử dụng để xóa một Excel Range hoàn toàn bao gồm các định dạng và dữ liệu.
Phương thức Formula
Phương thức Formula được sử dụng để thêm công thức cho Excel Range.
Ví dụ:
Range("A1").Formula = "=Sum(B1:B5)"
Kết quả
Thuộc tính Rows
Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của range.
Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj.Rows(3).SelectKết quả:
Thuộc tính Columns
Thuộc tính Columns cho phép truy cập vào một cột cụ thể của range.
Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:E4") rangeObj.Columns(3).SelectKết quả:
Thuộc tính Count
Thuộc tính Count được sử dụng để đếm số ô, hàng và cột của range.
Ví dụ 1:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") MsgBox rangeObj.CountKết quả:
Ví dụ 2:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") MsgBox rangeObj.Rows.CountKết quả:
All Rights Reserved
Đối Tượng Range Trong Excel Vba
Đối tượng Range trong Excel VBA là một trong những đối tượng được sử dụng nhiều nhất trong khi tự động hóa bất kỳ tác vụ nào với VBA. Chúng ta tham chiếu đến các Range khác nhau trong một Worksheet và thực hiện các hoạt động khác nhau trên Range trong Excel. Chúng ta có các thuộc tính và các phương thức khác nhau để xử lý các đối tượng Range trong Excel.
Đối tượng Range là đại diện của một cell (hoặc cells) trên Worksheet, là đối tượng quan trọng nhất của Excel VBA.
Ví dụ đối tượng Range trong Excel VBA
Đối tượng Range
Ví dụ 1: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Kết quả:
Ví dụ 2: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Kết quả:
Đối tượng Cells
Thay vì Range, bạn có thể sử dụng Cells. Sử dụng Cells đặc biệt hữu ích khi bạn muốn lặp qua các ranges.
Ví dụ 3: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Kết quả:
Ví dụ 4: đặt một nút lệnh trên Worksheet và thêm dòng code sau:
Range(Cells(1, 1), Cells(4, 1)).Value = 5Kết quả:
Khai báo một đối tượng Range
Bạn có thể khai báo một đối tượng Range bằng cách sử dụng các từ khoá Dim và Set.
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj .Value = 8Kết quả:
Các phương thức của đối tượng Range
Select
Để chọn Range được yêu cầu trong Worksheet
AddComment
AdvancedFilter
Áp dụng các bộ lọc nâng cao trên Excel Range
Calculate
Để làm mới các phép tính trong Excel Range
Formula
Để thêm công thức cho Excel Range
Clear
Để xóa một Excel Range hoàn toàn bao gồm các định dạng và dữ liệu
ClearComments
ClearContents
Để chỉ xóa nội dung/dữ liệu trong một Excel Range
ClearFormats
Để chỉ xóa các định dạng của một Excel Range
ClearHyperlinks
Để chỉ xóa các siêu liên kết trong một Excel Range
Copy
Để sao chép một Excel Range đến một vị trí khác
CopyFromRecordset
Sao chép dữ liệu từ recordset và dán vào một Excel Range
Cut
Cắt Excel Range trong Worksheeet
Delete
Để xóa một Range trong Worksheet
Find
Để tìm kiếm và một Cell có dữ liệu cần thiết
Insert
Để chèn một dãy các Cell, Row hoặc Column
ListNames
Để liệt kê các Excel Range được đặt tên trong bảng tính
Merge
Để hợp nhất Excel Range
PasteSpecial
Để dán dữ liệu với các tiêu chí khác nhau, như các giá trị, các định dạng có hoạt động toán học hoặc chuyển đổi
Phương thức Select
Một phương pháp quan trọng của đối tượng Range là phương thức Select. Phương thức Select được sử dụng để chọn một range.
Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj.SelectKết quả:
Lưu ý: Để chọn các ô trên một Worksheet khác, bạn phải kích hoạt Worksheet này trước. Ví dụ, các dòng code sau đây chọn ô B7 trên Worksheet thứ ba từ bên trái.
Worksheets(3).Activate Worksheets(3).Range("B7").SelectPhương thức Copy/Paste
Phương thức Copy và Paste sử dụng để sao chép một dãy và dán nó vào một nơi khác trên Worksheet.
Ví dụ:
Range("A1:A2").Select Selection.Copy Range("C3").Select ActiveSheet.PasteKết quả:
Range("C3:C4").Value = Range("A1:A2").Value ActiveSheet.PastePhương thức ClearContents
Phương thức ClearContents được sử dụng để chỉ xóa nội dung của một Excel Range.
Ví dụ:
Range("A1").ClearContentsHoặc đơn giản hơn bằng cách sử dụng code sau:
Phương thức ClearFormats
Phương thức ClearFormats được sử dụng để chỉ xóa định dạng của một Excel Range.
Phương thức Clear
Phương thức Clear được sử dụng để xóa một Excel Range hoàn toàn bao gồm các định dạng và dữ liệu.
Phương thức Formula
Phương thức Formula được sử dụng để thêm công thức cho Excel Range.
Ví dụ:
Range("A1").Formula = "=Sum(B1:B5)"Các thuộc tính của đối tượng Range
Rows
Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của range.
Columns
Thuộc tính Columns cho phép truy cập vào một cột cụ thể trong một range.
Count
Được sử dụng để đếm số ô, hàng và cột của range.
Thuộc tính Rows
Thuộc tính Rows cho phép truy cập vào một hàng cụ thể của range.
Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj.Rows(3).SelectKết quả:
Thuộc tính Columns
Thuộc tính Columns cho phép truy cập vào một cột cụ thể của range.
Ví dụ:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") rangeObj.Columns(2).SelectKết quả:
Thuộc tính Count
Thuộc tính Count được sử dụng để đếm số ô, hàng và cột của range.
Ví dụ 1:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") MsgBox rangeObj.CountKết quả:
Ví dụ 2:
Dim rangeObj As Range Set rangeObj = Range("A1:C4") MsgBox rangeObj.Rows.CountKết quả:
Hướng Dẫn Cách Viết Code Với Đối Tượng Range Trong Vba Excel
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:
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 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:
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à:
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
Đối Tượng Workbook Trong Excel Vba
Đối tượng Workbook trong Excel VBA là một trong những đối tượng được sử dụng thường xuyên nhất trong khi tự động hóa bất kỳ tác vụ nào với VBA. Bài này cung cấp các phương thức hay sử dụng của đối tượng Workbook.
Mỗi đối tượng Workbook tương ứng với một file excel.
Các phương thức của Workbook giúp chúng ta thực hiện các hành động khác nhau với Excel Workbooks. Ví dụ, chúng ta có thể Kích hoạt một Workbook và Xóa một Workbook hoặc Move Workbook. Và chúng ta cũng có thể Protect và UnProtect Workbooks.
Các phương thức của đối tượng Workbook
Phương thức Activate
Phương thức Activate của đối tượng Workbook trong VBA sẽ giúp bạn kích hoạt một Workbook cụ thể. Rất hữu ích khi bạn mở nhiều workbooks và muốn truy cập một Workbook cụ thể để thao tác hoặc đọc một số dữ liệu từ Active Workbook.
Tại sao chúng ta cần phải kích hoạt một Workbook bằng VBA?
Khi chúng ta phải xử lý nhiều workbooks (nhiều file excel) và bạn muốn đọc hoặc ghi vào một Workbook cụ thể thì bạn phải kích hoạt Workbook đó.
Ví dụ 1: Activate Workbook trong VBA với tên của Workbook
Sub ActiveWorkbookExample1() ' sử dụng tên của một Workbook Application.Workbooks("myFile.xlsx").Activate End SubVí dụ 2: Activate Workbook trong VBA với chỉ số của Workbook
Sub ActiveWorkbookExample2() ' sử dụng chỉ số của một Workbook Set wb = Application.Workbooks(2).Activate End SubVí dụ 3: Activate Workbook trong VBA với ThisWorkbook
Sử dụng ThisWorkbook bạn có thể activate Workbook chứa macro đang chạy như sau:
Sub ActiveWorkbookExample3() ' bạn có thể activate Workbook chứa macro đang chạy ThisWorkbook.Activate End SubNote: với Workbook đang được activate, tức là Workbook mà đang được chọn. Khi đó mọi thao tác đọc và ghi từ macro sẽ ảnh hưởng trực tiếp đến nó.
Tạo biến tham chiếu đến Workbook
Vấn đề: Khi bạn phải làm việc với nhiều workbooks (nhiều file excel), mỗi Workbook có nhiều Worksheet. Bạn phải sử dụng phương thức Activate với hết Workbook này đến Workshet khác để đọc hoặc ghi dữ liệu từ chúng, điều này có thể dẫn đến mã rối rắm, khó hiểu khiến bạn lúng túng.
Giải quyết vấn đề
Để giải quyết vấn đề trên, có một giải pháp cho bạn đó là với mỗi Workbook bạn tạo ra một biến tham chiếu. Sau đó, bất cứ khi nào muốn sử dụng (Activate) Workbook nào bạn chỉ cần tham chiếu đến biến tương ứng.
Ví dụ:
' khai báo đối tượng wb Dim wbInput As Workbook Dim wbOutput As Workbook ' gán wbInput bằng Workbook đang hoạt động (ActiveWorkbook) Set wbInput = Application.ActiveWorkbook ' gán wbOutput bằng chúng tôi để mở file D:testOutput.xlsx Set wbOutput = Application.Workbooks.Open("D:testOutput.xlsx")Sau đó, khi nào bạn sử dụng đến hai đối tượng wbInput, wbOutput thì nó tự động được kích hoạt, Khi đó bạn không cần phải gọi phương thức Activate nữa.
Có 6 cách để khởi tạo đối tượng Workbook
Từ khóa Set được sử dụng để để khởi tạo đối tượng Workbook.
Có 6 cách để khởi tạo đối tượng Workbook như sau:
' 1. khởi tạo bằng Workbook hiện tại (ThisWorkbook) Set wb = Application.ThisWorkbook ' 2. Khởi tạo bằng Workbook đang hoạt động (ActiveWorkbook) Set wb = Application.ActiveWorkbook ' 3. Khởi tạo bằng cách mở một Workbook khác (Workbooks.Open) Set wb = Application.Workbooks.Open("D:testmyFile.xlsx", ReadOnly:=True) ' 4. khởi tạo bằng cách sử dụng tên của một Workbook Set wb = Application.Workbooks("myFile.xlsx") ' 5. khởi tạo bằng cách sử dụng chỉ số của một Workbook Set wb = Application.Workbooks(2) ' 6. tạo ra một Workbook mới Set wb = Workbooks.AddPhương thức Close
Bạn có thể đóng một Workbook (tương ứng một file excel) bởi việc sử dụng phương thức Close của đối tượng Workbook trong Excel VBA.
Cú pháp:
Workbooks("Workbook Name").Close ([SaveChanges], [Filename], [RouteWorkbook])Ví dụ 1: Close Workbook trong VBA với Savechanges: = True
Sub CloseWorkbookExample() Dim wb As Workbook Set wb = Workbooks.Open("D:myFile.xlsx") wb.Close Savechanges:=True End SubTrong ví dụ trên, chúng ta tạo ra một biến có tên là wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức ‘Open’ của workbook object để mở một bảng tính có tên là “D:myFile.xlsx” và sau đó gán nó cho đối tượng wb trong câu lệnh thứ hai. Cuối cùng trong câu lệnh thứ ba, chúng ta đã sử dụng phương thức ‘Close’ của đối tượng workbook để đóng lại trên bảng tính đã xác định. Cuối cùng chúng ta đã đề cập đến ‘Savechanges: = True’, có nghĩa là nếu chúng ta đã thực hiện bất kỳ thay đổi trong bảng tính thì nó sẽ lưu các thay đổi.
Ví dụ 2: Close Workbook trong VBA với Savechanges: = False
Sub CloseWorkbookExample2() Workbooks("D:myFile.xlsx").Close Savechanges:=False End SubVí dụ trên giống như ví dụ 1. Sự khác biệt là chúng ta sử dụng ‘Savechanges:=False’, điều đó có nghĩa là nếu chúng ta thực hiện bất kỳ thay đổi trong bảng tính nó sẽ không được lưu lại.
Ví dụ 3: Close Workbook đang được activate
Sub CloseWorkbookExample3() ActiveWorkbook.Close Savechanges:=False End SubVí dụ trên đóng bẳng tính đang được chọn và không lưu lại những gì thay đổi.
Phương thức Save
Chúng ta có thể lưu bảng tính bằng cách sử dụng phương thức ‘Save’ của đối tượng Workbook trong Excel VBA.
Cú pháp:
Workbooks("Workbook Name").SaveVí dụ 1: Save Workbook trong VBA
Sub SaveWorkbookExample1() Dim wb As Workbook Set wb = Workbooks.Add wb.Save End SubTrong ví dụ trên, chúng ta đã tạo ra biến có tên wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức ‘Add’ của đối tượng Workbook để tạo ra bảng tính mới và sau đó gán nó cho đối tượng wb trong câu lệnh thứ hai. Cuối cùng trong câu lệnh thứ ba, chúng ta đã sử dụng phương thức ‘Save’ của đối tượng Workbook để lưu lại bảng tính vừa tạo.
Câu hỏi: Trong ví dụ trên, bảng tính trên đã được tạo ra và lưu ở đâu?
Trả lời: Trong ví dụ trên bảng tính trên đã được lưu tại thư mục Documents.
Ví dụ 1: Save Workbook hiện tại (đang được kích hoạt)
Sub SaveWorkbookExample1() ActiveWorkbook.Save End SubTrong ví dụ trên mọi thay đổi của Workbook đang được kích hoạt sẽ được lưu lại.
Note: Đối tượng ActiveWorkbook đại diện cho bảng tính hiện tại mà đang kích hoạt.
Phương thức SaveAs
Chúng ta có thể lưu bảng tính bằng cách sử dụng phương thức ‘SaveAs’ của đối tượng Workbook trong Excel VBA.
Cú pháp:
Workbooks("Workbook Name").SaveAs([Filename], [FileFormat], [Password], [WriteResPassword], [ReadOnlyRecommended], [CreateBackup], [AccessMode As XlSaveAsAccessMode = xlNoChange], [ConflictResolution], [AddToMru], [TextCodepage], [TextVisualLayout], [Local])Ví dụ: SaveAs Workbook trong VBA
Sub SaveAsWorkbookExample() Dim wb As Workbook Set wb = Workbooks.Add wb.SaveAs Filename:="D:testSample.xlsx" End SubTrong ví dụ trên, chúng ta đã tạo ra biến có tên wb trong câu lệnh đầu tiên. Chúng ta đã sử dụng phương thức ‘Add’ của đối tượng Workbook để thêm bảng tính mới và sau đó gán nó cho đối tượng wb trong câu lệnh thứ hai. Cuối cùng trong câu lệnh thứ ba chúng ta đã sử dụng phương thức ‘SaveAs’ của đối tượng Workbook để lưu bảng tính ở vị trí khác và tên file là “D:testSample.xlsx” (Bạn có thể thay đổi tên tập tin theo ý muốn của bạn).
Phương thức SaveCopyAs
Với phương thức SaveCopyAs của đối tượng Workbook trong VBA, bạn có thể lưu một bản sao của Workbook đang mở.
Tại sao cần sử dụng phương thức SaveCopyAS?
Đôi khi bạn muốn lưu bảng tính với những thay đổi và bạn không muốn sửa đổi bảng tính đã mở. Vì vậy, chỉ cần bạn cần phải sử dụng phương thức ‘SaveCopyAs’ của đối tượng Workbook.
Cú pháp:
Workbooks("Workbook Name").SaveCopyAs([Filename])Ví dụ: SaveCopyAs Workbook trong VBA
Sub WorkbookSaveCopyAsExample() ThisWorkbook.SaveCopyAs chúng tôi & "" & "ver1_" & ThisWorkbook.Name End SubCác thuộc tính của đối tượng Workbook
Path
Để lấy ra đường dẫn tuyệt đối của Workbook.
FullName
Để lấy ra tên đầy đủ đối của Workbook.
Sheets
Lấy ra một collection của Charts và Worksheets..
Worksheets
Để lấy ra tất cả các Worksheet của Workbook.
Tìm hiểu thêm: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbook-object-excel
Hướng Dẫn Cách Khai Báo Biến Đối Tượng Trong Vba Excel
Phân biệt biến đối tượng và biến giá trị
Biến đối tượng là biến đại diện cho 1 đối tượng cụ thể (Object):
Workbook, Worksheet, Range
Shape, Picture…
Còn biến giá trị thì thể hiện cho 1 giá trị (Value, Variant):
Giá trị dạng số: Integer, Long, Single, Double…
Giá trị dạng ngày tháng: Date
Giá trị dạng ký tự, văn bản: String
Do đó khi làm việc viết 2 loại biến này, cú pháp khai báo biến cũng khác nhau
Cú pháp khai báo biến đối tượng
Ví dụ chúng ta muốn gán biến MyWB cho Workbook nơi chứa câu lệnh Macro thì viết như sau:
Từ khóa Dim dùng để xác định phạm vi của biến
MyWB là tên biến
Workbook là loại đối tượng của biến
Set là từ khóa dùng để chỉ rõ biến đó được gán cho đối tượng nào
ThisWorbook là tên của đối tượng (Workbook nơi chứa câu lệnh Macro)
Ứng dụng biến đối tượng trong lập trình VBA
Ví dụ chúng ta có yêu cầu như sau:
Viết Macro rồi gán vào Shape Export, khi bấm vào Shape đó sẽ chạy Macro trích xuất dữ liệu đó sang vùng A1:B17 của Sheet1 trong 1 Workbook mới.
Cách làm như sau:
1. Phân tích các bước thực hiện (Quy trình)
Ở đây chúng ta có 2 đối tượng Workbook: 1 Workbook đã có sẵn với phần báo cáo, 1 Workbook được thêm mới để nhận dữ liệu từ Workbook có sẵn.
Do đó để dễ gọi tên và làm việc với đúng các Workbook, chúng ta sẽ đặt 2 biến cho 2 Workbook này.
Workbook có sẵn phần báo cáo là MyWB
Workbook được thêm mới là NewWB
Công việc gồm:
Tạo mới 1 Worbook
Copy dữ liệu từ MyWB, Sheet1, phần Range là B1:C17
Dán vào NewWB, Sheet1, vùng Range là A1:B17. Nội dung dán gồm Value, Format và Column Width
2. Câu lệnh code trong VBA
View the code on Gist.
Như vậy khi làm việc với các đối tượng khác nhau, dễ nhầm lẫn, chúng ta nên sử dụng phương pháp đặt biến đối tượng. Thay vì gọi rõ tên đối tượng thì chúng ta chỉ cần gọi biến đã gán cho đối tượng đó.
Các bạn có thể tải về file mẫu cho ví dụ trên tại địa chỉ: http://bit.ly/2Ndpybg
Ngoài ra để làm việc tốt hơn với các đối tượng trong VBA, các bạn có thể tìm hiểu các bài viết:
Hướng dẫn cách viết code với đối tượng Range trong VBA Excel Hướng dẫn cách viết code với đối tượng Workbook trong VBA Excel Hướng dẫn cách viết code với đối tượng Worksheet trong VBA Excel
Cập nhật thông tin chi tiết về Excel Vba: Đối Tượng Range Trong Excel Vba 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!