VBA Sheets - Hướng dẫn cơ bản

Đây là hướng dẫn cuối cùng để làm việc với Trang tính / Trang tính trong Excel.

Ở cuối hướng dẫn này, chúng tôi đã tạo một bảng lừa đảo gồm các lệnh phổ biến để làm việc với trang tính.

Trang tính Vs. Trang tính

Có hai cách để tham chiếu Trang tính bằng VBA. Đầu tiên là với đối tượng Trang tính:

1 Trang tính ("Trang 1"). Kích hoạt

Cái còn lại là với đối tượng Worksheets:

1 Worksheets ("Sheet1"). Kích hoạt

99% thời gian, hai đối tượng này giống hệt nhau. Trên thực tế, nếu bạn đã tìm kiếm trực tuyến các ví dụ về mã VBA, bạn có thể đã thấy cả hai đối tượng được sử dụng. Đây là sự khác biệt:

Bộ sưu tập Trang tính chứa Trang tính VÀ Trang tính Biểu đồ.

Vì vậy, hãy sử dụng Trang tính nếu bạn muốn bao gồm Trang tính thông thường VÀ Trang tính biểu đồ. Sử dụng Trang tính nếu bạn muốn loại trừ Trang tính biểu đồ. Đối với phần còn lại của hướng dẫn này, chúng tôi sẽ sử dụng Trang tính và Trang tính thay thế cho nhau.

Tham chiếu Trang tính

Có một số cách khác nhau để tham chiếu Trang tính:

  • Bảng hoạt động
  • Tên tab trang tính
  • Số chỉ mục trang tính
  • Tên mã trang tính

Bảng hoạt động

ActiveSheet là Sheet hiện đang hoạt động. Nói cách khác, nếu bạn tạm dừng mã của mình và nhìn vào Excel, thì đó là trang tính sẽ hiển thị. Ví dụ mã dưới đây sẽ hiển thị Hộp thư có tên ActiveSheet.

1 MsgBox ActiveSheet.Name

Tên trang tính

Bạn có lẽ quen thuộc nhất với việc tham chiếu Trang tính theo Tên tab của chúng:

1 Trang tính ("TabName"). Kích hoạt

Số chỉ mục trang tính

Số chỉ mục trang tính là vị trí trang tính trong sổ làm việc. 1 là trang tính đầu tiên. 2 là tờ thứ hai, v.v.:

1 Trang tính (1). Kích hoạt

Số chỉ mục trang tính - Trang tính cuối cùng trong sổ làm việc

Để tham chiếu Trang tính cuối cùng trong sổ làm việc, hãy sử dụng Sheets.Count để lấy Số chỉ mục cuối cùng:

1 Trang tính (Sheets.Count). Kích hoạt

Trang tính "Tên mã"

Tên mã trang tính là tên đối tượng trong VBA:

1 CodeName.Activate

Tham chiếu trang tính trong sổ làm việc khác

Cũng dễ dàng tham khảo Trang tính trong các Sổ làm việc khác. Để làm như vậy, bạn cần sử dụng Đối tượng Workbooks:

1 Workbooks ("VBA_Examples.xlsm"). Worksheets ("Sheet1"). Kích hoạt

Quan trọng: Sổ làm việc phải mở trước khi bạn có thể tham chiếu Trang tính đó.

Kích hoạt so với Chọn Trang tính

Trong một bài viết khác, chúng tôi thảo luận mọi thứ về kích hoạt và chọn trang tính. Phiên bản ngắn là sau:

Khi bạn kích hoạt một Trang tính, nó sẽ trở thành một Trang tính Hoạt động. Đây là trang tính bạn sẽ thấy nếu bạn xem chương trình Excel của mình. Mỗi lần chỉ có thể kích hoạt một trang tính.

Kích hoạt một Trang tính

1 Trang tính ("Trang 1"). Kích hoạt

Khi bạn chọn một Trang tính, nó cũng sẽ trở thành một Trang tính Hoạt động. Tuy nhiên, bạn có thể chọn nhiều trang tính cùng một lúc. Khi nhiều trang tính được chọn cùng một lúc, trang tính “trên cùng” là Trang tính Hoạt động. Tuy nhiên, bạn có thể chuyển đổi ActiveSheet trong các trang tính đã chọn.

Chọn một trang tính

1 Trang tính ("Trang 1"). Chọn

Chọn nhiều trang tính

Sử dụng một mảng để chọn nhiều trang tính cùng một lúc:

1 Bảng tính (Mảng ("Sheet2", "Sheet3")). Chọn

Biến bảng tính

Gán trang tính cho một biến cho phép bạn tham chiếu trang tính theo tên biến của nó. Điều này có thể tiết kiệm rất nhiều lần nhập và làm cho mã của bạn dễ đọc hơn. Ngoài ra còn có nhiều lý do khác mà bạn có thể muốn sử dụng các biến.

Để khai báo một biến trang tính:

1 Làm mờ ws dưới dạng trang tính

Gán trang tính cho một biến:

1 Đặt ws = Sheets ("Sheet1")

Bây giờ bạn có thể tham chiếu biến trang tính trong mã của mình:

1 ws.Activate

Vòng qua tất cả các trang tính trong Workbook

Biến trang tính rất cần thiết khi bạn muốn lặp lại tất cả các trang tính trong sổ làm việc. Cách dễ nhất để làm điều này là:

12345 Làm mờ ws dưới dạng Trang tínhĐối với mỗi ws trong WorksheetsMsgBox ws.nameTuần tiếp theo

Mã này sẽ lặp qua tất cả các trang tính trong sổ làm việc, hiển thị mỗi tên trang tính trong một hộp thông báo. Vòng lặp qua tất cả các trang tính trong sổ làm việc rất hữu ích khi khóa / mở khóa hoặc ẩn / hiện nhiều trang tính cùng một lúc.

Bảo vệ trang tính

Bảo vệ sổ làm việc

Bảo vệ sổ làm việc khóa sổ làm việc khỏi các thay đổi về cấu trúc như thêm, xóa, di chuyển hoặc ẩn trang tính.

Bạn có thể bật tính năng bảo vệ sổ làm việc bằng VBA:

1 ActiveWorkbook.Protect Password: = "Mật khẩu"

hoặc tắt tính năng bảo vệ sổ làm việc:

1 ActiveWorkbook.UnProtect Password: = "Mật khẩu"

Lưu ý: Bạn cũng có thể bảo vệ / bỏ bảo vệ mà không cần mật khẩu bằng cách bỏ qua đối số Mật khẩu:

1 ActiveWorkbook.Protect

Bảo vệ trang tính

Bảo vệ cấp trang tính ngăn các thay đổi đối với các trang tính riêng lẻ.

Bảo vệ trang tính

1 Worksheets ("Sheet1"). Bảo vệ "Mật khẩu"

Bỏ bảo vệ trang tính

1 Worksheets ("Sheet1"). Bỏ bảo vệ "Mật khẩu"

Có nhiều tùy chọn khi bảo vệ trang tính (cho phép thay đổi định dạng, cho phép người dùng chèn hàng, v.v.) Chúng tôi khuyên bạn nên sử dụng Trình ghi Macro để ghi lại các cài đặt mong muốn của mình.

Chúng tôi thảo luận về bảo vệ trang tính chi tiết hơn ở đây.

Thuộc tính hiển thị trang tính

Bạn có thể đã biết rằng các trang tính có thể bị ẩn:

Thực tế có ba cài đặt hiển thị trang tính: Hiển thị, Ẩn và VeryHidden.Bất kỳ người dùng Excel thông thường nào cũng có thể bỏ ẩn các trang tính - bằng cách nhấp chuột phải vào khu vực tab trang tính (được hiển thị ở trên). Trang tính VeryHidden chỉ có thể được hiển thị bằng mã VBA hoặc từ trong Trình chỉnh sửa VBA. Sử dụng các ví dụ mã sau để ẩn / hiện trang tính:

Bỏ ẩn trang tính

1 Worksheets ("Sheet1"). Visible = xlSheetVible

Ẩn trang tính

1 Worksheets ("Sheet1"). Hiển thị = xlSheetHidden

Rất ẩn trang tính

1 Worksheets ("Sheet1"). Visible = xlSheetVeryHidden

Sự kiện cấp trang tính

Sự kiện là trình kích hoạt có thể khiến "Thủ tục sự kiện" chạy. Ví dụ: bạn có thể làm cho mã chạy mỗi khi bất kỳ ô nào trên trang tính được thay đổi hoặc khi trang tính được kích hoạt.

Các thủ tục sự kiện trang tính phải được đặt trong một mô-đun trang tính:

Có rất nhiều sự kiện trang tính. Để xem danh sách đầy đủ, hãy chuyển đến mô-đun trang tính, chọn “Trang tính” từ menu thả xuống đầu tiên. Sau đó, chọn một thủ tục sự kiện từ menu thả xuống thứ hai để chèn nó vào mô-đun.

Sự kiện kích hoạt bảng tính

Các sự kiện kích hoạt trang tính chạy mỗi khi trang tính được mở.

123 Private Sub Worksheet_Activate ()Phạm vi ("A1"). ChọnKết thúc Sub

Mã này sẽ chọn ô A1 (đặt lại vùng xem ở trên cùng bên trái của trang tính) mỗi khi trang tính được mở.

Sự kiện thay đổi trang tính

Các sự kiện thay đổi trang tính chạy bất cứ khi nào giá trị ô được thay đổi trên trang tính. Đọc hướng dẫn của chúng tôi về Sự kiện Thay đổi Trang tính để biết thêm thông tin.

Bảng Cheat Bảng tính

Dưới đây, bạn sẽ tìm thấy một bảng lừa đảo chứa các ví dụ mã phổ biến để làm việc với các trang tính trong VBA

VBA Worksheets Cheatsheet

Bảng tính VBA Cheatsheet
Sự miêu tảVí dụ về mã
Tham chiếu và Kích hoạt Trang tính
Tên tabTrang tính ("Đầu vào"). Kích hoạt
Tên mã VBASheet1.Activate
Vị trí chỉ mụcTrang tính (1). Kích hoạt
Chọn trang tính
Chọn trang tínhTrang tính ("Đầu vào"). Chọn
Đặt thành BiếnLàm mờ ws dưới dạng Trang tính
Đặt ws = ActiveSheet
Tên / Đổi tênActiveSheet.Name = "NewName"
Trang tiếp theoActiveSheet.Next.Activate
Vòng qua tất cả các trang tínhLàm mờ ws dưới dạng Trang tính
Đối với mỗi w trong Worksheets
Msgbox ws.name
Tuần tiếp theo
Lặp qua các trang tính đã chọnDim ws As Worksheet
Đối với mỗi ws Trong ActiveWindow.SelectedSheets
MsgBox ws.Name
Tuần tiếp theo
Nhận ActiveSheetMsgBox ActiveSheet.Name
Thêm trang tínhSheets.Add
Thêm trang tính và tênSheets.Add.Name = "NewSheet"
Thêm trang tính có tên từ ôSheets.Add.Name = range ("a3"). Giá trị
Thêm trang tính sau trang khácSheets.Add After: = Trang tính ("Đầu vào")
Thêm trang tính sau và tênSheets.Add (After: = Sheets ("Input")). Name = "NewSheet"
Thêm trang tính trước và tênSheets.Add (Trước: = Trang tính ("Đầu vào")). Name = "NewSheet"
Thêm trang tính vào cuối sổ làm việcSheets.Add After: = Trang tính (Sheets.Count)
Thêm trang tính vào đầu sổ làm việcSheets.Add (Trước: = Trang tính (1)). Name = "Trang tính đầu tiên"
Thêm trang tính vào biếnDim ws As Worksheet
Đặt ws = Sheets.Add
Sao chép trang tính
Di chuyển trang tính đến cuối sổ làm việcTrang tính ("Trang tính1"). Di chuyển sau: = Trang tính (Trang tính.Count)
Tới sổ làm việc mớiTrang tính ("Trang 1"). Sao chép
Các trang tính đã chọn thành sổ làm việc mớiActiveWindow.SelectedSheets.Copy
Trước một trang tính khácTrang tính ("Trang tính1"). Sao chép Trước: = Trang tính ("Trang tính2")
Trước trang đầu tiênTrang tính ("Trang 1"). Sao chép Trước: = Trang tính (1)
Sau trang cuối cùngTrang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)
Sao chép và đặt tênTrang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)
ActiveSheet.Name = "LastSheet"
Sao chép và đặt tên từ giá trị ôTrang tính ("Trang tính1"). Sao chép Sau: = Trang tính (Trang tính.Count)
ActiveSheet.Name = Range ("A1"). Giá trị
Đến một sổ làm việc khácTrang tính ("Trang tính1"). Sao chép Trước: = Sách làm việc ("Ví dụ.xlsm"). Trang tính (1)
Ẩn / Hiện Trang tính
Ẩn trang tínhTrang tính ("Trang 1"). Hiển thị = Sai
hoặc
Trang tính ("Trang 1"). Hiển thị = xlSheetHidden
Bỏ ẩn trang tínhTrang tính ("Trang 1"). Visible = True
hoặc
Trang tính ("Trang 1"). Visible = xlSheetVible
Rất ẩn trang tínhTrang tính (“Trang tính1”). Visible = xlSheetVeryHidden
Xóa hoặc Xóa Trang tính
Xóa trang tínhTrang tính ("Trang 1"). Xóa
Xóa trang tính (Xử lý lỗi)Khi có lỗi Tiếp tục tiếp theo
Trang tính ("Trang 1"). Xóa
Lỗi GoTo 0
Xóa trang tính (Không có lời nhắc)Application.DisplayAlerts = False
Trang tính ("Trang 1"). Xóa
Application.DisplayAlerts = True
Xóa trang tínhTrang tính ("Trang 1"). Cells.Clear
Chỉ xóa nội dung trang tínhSheets ("Sheet1"). Cells.ClearContents
Xóa trang tính được sử dụngTrang tính ("Trang 1"). UsedRange.Clear
Bảo vệ hoặc Bỏ bảo vệ Trang tính
Bỏ bảo vệ (Không có mật khẩu)Trang tính ("Trang 1"). Bỏ bảo vệ
Bỏ bảo vệ (Mật khẩu)Trang tính ("Trang 1"). Bỏ bảo vệ "Mật khẩu"
Bảo vệ (Không có mật khẩu)Trang tính ("Trang 1"). Bảo vệ
Bảo vệ (Mật khẩu)Trang tính ("Trang 1"). Bảo vệ "Mật khẩu"
Bảo vệ nhưng cho phép truy cập VBASheets ("Sheet1"). Bảo vệ UserInterfaceOnly: = True
Bỏ bảo vệ tất cả các trang tínhDim ws As Worksheet
Đối với mỗi ws trong Worksheets
ws.Unprotect "mật khẩu"
Tuần tiếp theo
wave wave wave wave wave