1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tự động hóa trong thiết kế cầu đường part 7 doc

29 379 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 2,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Hộp thoại chọn thư mục – Đối tượng FileDialog Nếu cần người dùng chọn một thư mục để thực hiện thao tác nào đó, có thể thực hiện theo nhiều cách khác nhau, nhưng đơn giản nhất vẫn là sử

Trang 1

Title:="Luu tap tin")

If fileSaveName <> "False" Then

MsgBox "Save as " & fileSaveName

End If

End Sub

8.2.4 Hộp thoại chọn thư mục – Đối tượng FileDialog

Nếu cần người dùng chọn một thư mục để thực hiện thao tác nào đó, có thể thực hiện theo nhiều cách khác nhau, nhưng đơn giản nhất vẫn là sử dụng đối tượng FileDialog

Ví dụ sau hiển thị một hộp thoại cho phép người dùng chọn thư mục Sau đó hiển thị tên thư mục bằng cách sử dụng hộp thoại MsgBox Tên tệp sẽ được truy cập thông qua thuộc tính SelectedItems của đối tượng FileDialog

Sub GetAFolder()

With Application.FileDialog(msoFileDialogFolderPicker)

.InitialFileName = Application.DefaultFilePath & “\”

.Title = “Please select a location for the backup”

8.2.5 Các hộp thoại mặc định trong Excel – Tập đối tượng Dialogs

Tập đối tượng Dialogs của đối tượng Application bao gồm 258 phần tử thể hiện hầu hết các hộp thoại mặc định trong Excel Mỗi hộp thoại có một hằng số được định nghĩa trước giúp người dùng có thể xác định được hộp thoại cần hiển thị một cách dễ dàng Chẳng hạn như khi muốn hiển thị hộp thoại GoTo của Excel, sử dụng hằng số xlDialogFormulaGoto

Sử dụng phương thức Show để hiển thị các hộp thoại Ví dụ sau sẽ hiển thị hộp thoại Go To của Excel

Application.Dialogs(xlDialogFormulaGoto).Show

Người lập trình còn có thể viết mã lệnh để kiểm tra cách thức đóng hộp thoại Trong ví dụ sau, biến Result sẽ trả về TRUE nếu người dùng kích chuột vào nút OK, và FALSE nếu kích chuột vào nút Cancel hoặc nhấn phím ESC

Result = Application.Dialogs(xlDialogFormulaGoto).Show

Cần phải lưu ý rằng, tính năng này không được trình bày rõ ràng trong các tài liệu trợ giúp của Excel Các tài liệu trợ giúp cho phần này rất sơ lược, không đề cập đến một sự thật: các hộp

Trang 2

168

thoại hiển thị khi gọi bằng VBA không hoàn toàn giống như khi gọi thông qua trình đơn trong Excel Chính vì vậy, chẳng có cách nào khác ngoài việc thử nghiệm để kiểm tra hoạt động của các hộp thoại

CHÚ Ý Các hộp thoại hiển thị khi gọi bằng VBA không hoàn toàn giống như khi gọi thông

qua trình đơn trong Excel

Trong trường hợp của hộp thoại Go To, khi hiển thị bằng VBA, nút Special bị mờ đi, không

hoàn toàn giống như khi chọn từ trình đơn EditÖGo To

Ngoài ra, còn có một vấn đề khác nữa, đó là việc không thể hiển thị được các hộp thoại có nhiều thẻ khác nhau Lấy ví dụ với hộp thoại Format Cell, không có cách nào để hiển thị đầy đủ hộp thoại này với nhiều thẻ khác nhau từ VBA, thay vào đó, chỉ có thể hiển thị một thẻ tại một thời điểm Đoạn mã sau chỉ hiển thị được thẻ Alignment của hộp thoại Format Cells:

Application.Dialogs(xlDialogAlignment).Show

Để hiển thị các thẻ khác trong hộp thoại Format Cells, phải sử dụng riêng lẻ các hằng số đã được định nghĩa trước như: xlDialogFormatNumber, xlDialogBorder, xlDialogCellProtection, xlDialogPatterns, hoặc xlDialogFontProperties

Trang 3

169

Có rất nhiều hằng số được định nghĩa trước tương ứng với một hộp thoại trong Excel Danh sách đầy đủ các hằng số này có thể được tra cứu với Object Browser:

1 Trong mô đun mã lệnh VBAIDE, nhấn F2 để khởi động Object Browser

2 Trong cửa sổ Object Browser, chọn Excel ở danh sách phía trên

3 Trong danh sách thứ 2, gõ vào xlDialog

4 Kích chuột vào biểu tượng hình ống nhòm

CHÚ Ý Hiển thị một hộp thoại không đúng ngữ cảnh sẽ làm phát sinh lỗi Ví dụ như khi

đang chọn một chuỗi số liệu trong một biểu đồ mà lại hiển thị hộp thoại Fonts (hằng số xlDialogFontProperties) thì sẽ xuất hiện thông báo lỗi bởi vì hộp thoại này xuất hiện trong tình huống này là không thích hợp

Dưới đây là danh số một số hằng số hay được sử dụng:

xlDialogOpen Hộp thoại Open

xlDialogSaveAs Hộp thoại Save As

xlDialogPageSetup Hộp thoại Page Setup

xlDialogPrint Hộp thoại Print

xlDialogPrinterSetup Hộp thoại Printer Setup

GỢI Ý Các hằng số tương ứng khi sử dụng tập đối tượng Dialogs được bắt đầu bằng

xlDialog và tiếp theo là tên của hộp thoại (viết liền nhau) Trong VBAIDE, gõ xlDialog sau

đó nhấn CTRL+Space để hiển thị cửa sổ gợi ý mã lệnh, trong đó sẽ có danh sách đầy đủ các hằng số liên quan

8.2.6 Thực thi mục trình đơn Excel từ VBA

Trang 4

170

Một cách khác nữa để hiển thị các hộp thoại mặc định là thực thi trực tiếp thông qua trình đơn Điều này cũng tương đương như khi sử dụng chuột để chọn một mục trình đơn trong thanh trình đơn của Excel

Đoạn mã lệnh sau tương đương với việc người dùng chọn trình đơn EditÖGo To trực tiếp

Việc thực thi mục trình đơn như thế này được thực hiện khá đơn giản, hơn nữa còn khắc phục được nhược điểm không hiển thị hộp thoại có nhiều thẻ như đã đề cập ở phần “Các hộp thoại mặc định trong Excel – Tập đối tượng Dialogs” trang 167 Ví dụ sau sẽ hiển thị hộp thoại Format Cells với đầy đủ các thẻ định dạng

Application.CommandBars("Worksheet Menu Bar") _

Controls("Format").Controls("Cells ").Execute

Ngoài ra, theo cách này, người lập trình có thể thực thi bất kỳ một mục trình đơn nào có trong thanh trình đơn của Excel

8.3 Hộp thoại tuỳ biến – UserForm

Khi các hộp thoại mặc định trong Excel không đáp ứng được nhu cầu, người lập trình Excel có thể tạo ra các hộp thoại tuỳ biến của riêng mình thông qua các UserForm Với khả năng tuỳ biến cao, người lập trình có thể sử dụng UserForm và các điều khiển trên đó để tạo ra những hộp thoại với nhiều tính năng hơn, phù hợp hơn với nhu cầu thực tế hơn Việc tạo các hộp thoại tuỳ biến được thực hiện dễ dàng và hơn nữa với khả năng của mình, người lập trình có thể tạo

ra các hộp thoại trông chẳng khác gì hộp thoại của chương trình Excel

Hộp thoại tuỳ biến được tạo ra dựa trên UserForm thông qua VBAIDE Thông thường, có thể tạo hộp thoại tuỳ biến theo các bước sau:

1 Tạo mới một UserForm vào trong dự án VBA của Workbook

2 Viết thủ tục để hiển thị UserForm Thủ tục này phải được đặt trong một mô-đun của VBA (chứ không phải đặt trong mô-đun của UserForm)

3 Chèn thêm các điều khiển cần thiết trên UserForm

4 Điều chỉnh các điều khiển vừa thêm

5 Viết mã lệnh cho các sự kiện tương ứng của các điều khiển (nếu cần) Các thủ tục này phải được đặt trong mô-đun của chính UserForm đó

Sau khi thực hiện xong các bước trên, mỗi khi cần hiển thị hộp thoại tuỳ biến, chỉ cần thực thi thủ tục đã tạo ở bước 2

8.3.1 Tạo mới UserForm

Để tạo mới UserForm, khởi động VBAIDE (nhấn phím ALT+F11), chọn dự án ứng với

workbook cần thêm Userform, sau đó chọn trình đơn InsertÖUserForm Các UserForm sẽ

được tự động đặt tên UserForm1, UserForm2, Người lập trình có thể thay đổi tên của UserForm để dễ dàng nhận dạng UserForm thông qua cửa sổ Properties (chọn UserForm và nhấn phím F4 để hiển thị cửa sổ Properties)

Trang 5

Ø object: là đối tượng kiểu UserForm;

Ø modal: là tham số tuỳ chọn, xác định kiểu hiển thị của UserForm Modal có thể là một trong hai giá trị vbModal hoặc vbModeless Nếu là vbModal, người dùng phải đóng UserForm mới có thể tiếp tục thao tác với Excel Nếu là vbModeless, người dùng vẫn có thể vừa thao tác trên UserForm, vừa thao tác trên Excel Mặc định là giá trị vbModal Đoạn mã sau sẽ hiển thị UserForm có tên là UserForm1 ở chế độ Modal:

UserForm1.Show

Ngoài ra, còn có một kỹ thuật khác để hiển thị UserForm: sử dụng phương thức Add của tập đối tượng UserForm, sau đó sử dụng phương thức Show để hiển thị UserForm Phương thức này thích hợp khi trong dự án có nhiều UserForm và người có thể chỉ định sự xuất hiện của một UserForm bất kỳ Đoạn mã sau sẽ hiển thị UserForm có tên là UserForm1:

MyForm = “UserForm1”

UserForms.Add(MyForm).Show

CHÚ Ý Thủ tục để hiển thị hộp thoại tuỳ biến (UserForm) phải được đặt trong một

mô-đun chuẩn của VBA (chứ không phải đặt trong mô-mô-đun của UserForm)

Trang 6

172

VBA còn có lệnh Load Lệnh này chỉ tải UserForm vào trong bộ nhớ mà không hiển thị cho đến khi sử dụng phương thức Show của UserForm đó Để tải UserForm1 vào bộ nhớ, thực hiện như sau:

Load UserForm1

Khi có một UserForm tương đối phức tạp (có nhiều thành phần điều khiển cùng với nhiều dữ liệu bên trong đó), nếu sử dụng lệnh Load để tải UserForm vào bộ nhớ thì UserForm sẽ được hiển thị nhanh hơn khi sử dụng phương thức Show Tuy nhiên, trong đại đa số các trường hợp, chỉ cần sử dụng phương thức Show, bởi lẽ phương thức này cũng đã tự động thực hiện lệnh Load (nếu UserForm chưa được tải vào bộ nhớ) ngay trước khi hiển thị Userform

Một khi đã được hiển thị, UserForm sẽ luôn tồn tại trên màn hình cho đến khi người dùng đóng

nó lại Vì vậy, thông thường, người lập trình sẽ tạo thêm một nút lệnh (Command Button) trên UserFrom để thực hiện thủ tục đóng UserForm Thủ tục này có thể sử dụng lệnh Unload để dỡ

bỏ UserForm khỏi bộ nhó của máy tính, hoặc sử dụng phương thức Hide của đối tượng UserForm để tạm thời ẩn UserForm

Đoạn mã sau sẽ đóng cửa sổ UserForm1:

8.3.3 Các điều khiển trên UserForm

Người lập trình có thể dùng rất nhiều loại điều khiển khác nhau lên UserForm Thông tin chi

tiết, xem lại mục “Làm việc với UserForm và các thành phần điều khiển” trang 61 Dưới đây

chỉ trình bày thêm một điều khiển riêng của Excel, điều khiển RefEdit

Điều khiển RefEdit cho phép người dùng lựa chọn một vùng dữ liệu bằng cách nhập địa chỉ hoặc nhập tên vùng dữ liệu hoặc sử dụng chuột để chọn trực tiếp trong worksheet Khi người dùng kích chuột vào biểu tượng nhỏ ở góc phải của điều khiển, hộp thoại sẽ tạm thời được ẩn đi

và một cửa sổ nhỏ để người dùng chọn vùng dữ liệu sẽ được hiện lên, giống hệt như các hộp thoại mặc định của Excel

Trang 7

173

Hình IV-19: Điều khiển RefEdit

Điều khiển RefEdit cũng tương tự như điều khiển Textbox, vì vậy có thể tham khảo thêm về điều khiển TextBox để biết thông tin về các phương thức và thuộc tính của điều khiển RefEdit Khi thực hiện các thao tác sử dụng RefEdit, cần ghi nhớ những điểm sau:

Ø Điều khiển RefEdit trả về chuỗi chứa địa chỉ của vùng dữ liệu Sau đó, có thể chuyển chuỗi đó thành đối tượng kiểu Range sử dụng đoạn mã tương tự như sau:

Dim UserRange As Range

Set UserRange = Range(RefEdit1.Text)

Ø Nên khởi tạo giá trị ban đầu cho điều khiển RefEdit bằng địa chỉ của vùng dữ liệu hiện hành Để làm được như vậy, trong sự kiện UserForm_Initialize của UserForm cần thêm đoạn mã lệnh tương tự như sau:

RefEdit1.Text = ActiveWindow.Selection.Address

Ø Đừng bao giờ nghĩ rằng RefEdit luôn trả về địa chỉ đúng Bởi lẽ không phải chỉ có mỗi cách chọn vùng dữ liệu bằng chuột, người dùng còn có thể gõ và hiệu chỉnh địa chỉ hiển thị trên điều khiển RefEdit Vì vậy, phải luôn kiểm tra tính đúng đắn của địa chỉ vùng dữ liệu Đoạn mã sau minh hoạ cách kiểm tra lỗi này Nếu vùng dữ liệu nhập vào không đúng, một hộp thông báo sẽ hiện lên, và cho phép người dùng nhập lại:

On Error Resume Next

Set UserRange = Range(RefEdit1.Text)

Ø Nếu chỉ cần lấy địa chỉ của một ô trong vùng dữ liệu mà người dùng đã chọn, người lập trình có thể chọn ra một ô ở góc trên bên trái của vùng dữ liệu đó bằng cách sử dụng đoạn

mã lệnh như sau:

Set OneCell = Range(RefEdit1.Text).Range(“A1”)

GỢI Ý Để người dùng chọn một vùng dữ liệu nào đó, có thể sử dụng hộp thoại InputBox

của Excel, xem thêm mục “Hộp thoại InputBox của Excel – Hàm InputBox” trang 162

8.4 Thao tác trên thanh trình đơn

Hầu hết các chương trình chạy trong hệ điều hành Windows đều có hệ thống thanh trình đơn bởi tính tiện dụng và hệ thống của nó Thông qua thanh trình đơn, các chức năng của chương trình được tổ chức và liệt kê giúp người sử dụng có thể dễ dàng truy cập đến từng tính năng của chương trình một cách có hệ thống

Trang 8

Hình IV-20: Thanh trình đơn trong Excel

8.4.1 Cấu trúc của hệ thống thanh trình đơn

Cấu trúc của hệ thống thanh trình đơn trong Excel có thể được thể hiện thông qua sơ đồ hình cây như sau:

Ø Menu Bar: Là hàng chữ nằm ở trên cùng, ngay phía dưới thanh tiêu đề của ứng dụng Excel Như đã đề cập, tuỳ vào từng ngữ cảnh mà thanh Menu Bar có thể là Worksheet Menu Bar hoặc Chart Menu Bar

Ø Menu: Là một thành phần trong hệ thống trình đơn của Excel, khi người dùng kích chuột vào một Menu thì một danh sách các MenuItem sẽ hiện ra

Trang 9

175

Ø Menu Item: là một thành phần của Menu xuất hiện khi người dùng kích chuột vào menu Mỗi Menu Item sẽ thực hiện một tác vụ trong chương trình khi người dùng kích chuột lên Menu Item đó

Ø Ngoài ra, trong hệ thống menu của Excel còn có khái niệm Separator Bar, là một đường gạch ngang phân cách giữa các Menu Item dùng để nhóm các Menu Item có liên quan với một mục tiêu nào đó

Các Menu có thể lồng vào nhau theo nhiều cấp khác nhau Một Menu cũng có thể là MenuItem nằm trong một Menu khác Chẳng hạn như Menu View của Excel có MenuItem tên là Toolbars, và đến lượt mình, Toolbars cũng chính là một Menu, có chứa các MenuItem khác như: Standard, Formatting,…

Hình sau sẽ minh hoạ rõ hơn về cấu trúc của hệ thống trình đơn trong Excel

Hình IV-21: Hệ thống thanh trình đơn

8.4.2 Tạo trình đơn tuỳ biến

Người lập trình có thể dễ dàng thêm và hiệu chỉnh hệ thống trình đơn trong Excel thông qua các đoạn mã lệnh bằng VBA theo các bước sau:

1 Phác thảo trình đơn cần tạo và các chức năng tương ứng

2 Viết mã lệnh cho từng MenuItem Mỗi đoạn mã lệnh này được chứa trong một chương trình con dạng Sub

3 Tham chiếu đến Menu Bar, nơi cần tạo trình đơn tuỳ biến

4 Tạo Menu và MenuItem

5 Gán các đoạn mã lệnh tương ứng đã tạo ở bước 2 cho từng Menu Item

Để tham chiếu đến Menu Bar, có thể sử dụng đoạn mã sau:

Dim mnuBar as CommandBar

Set mnuBar = Application.CommandBars("Worksheet Menu Bar")

Để tạo Menu và MenuItem, sử dụng phương thức Add có trong tập đối tượng Controls Thực chất, phương thức này sẽ thêm một điều khiển vào trong tập đối tượng Controls của đối tượng

Trang 10

176

gốc, nơi sẽ chứa Menu và MenuItem Cú pháp của phương thức Add như sau (tất cả các tham

số đều là tham số tuỳ chọn):

object.Add(Type, Id, Parameter, Before, Temporary)

Object Đối tượng cha, nơi chứa các đối tượng sẽ được thêm vào bằng phương thức

Add

Type Xác định kiểu đối tượng sẽ được thêm vào trong tập đối tượng Controls của

đối tượng Object Tham số Type có thể bằng một trong các giá trị sau:

- Nếu muốn tạo Menu: gán Type= msoControlPopup

- Nếu muốn tạo Menu Item: gán Type= msoControlButton

Id Số nguyên xác định điểu khiển được xây dựng sẵn Trong trường hợp này,

khi cần tạo một đối tượng mới, có thể gán tham số này bằng 1 hoặc bỏ trống Parameter Với Menu tuỳ biến, tham số này có thể được dùng để gửi thông tin đến các

thủ tục trong Visual Basic Thông thường, tham số này được bỏ trống

Before Một số xác định vị trí xuất hiện của đối tượng mới được thêm vào Nếu tham

số này được bỏ trống, đối tượng mới sẽ được thêm vào vị trí cuối cùng

Temporary Nếu bằng TRUE, đối tượng chỉ xuất hiện tạm thời Nghĩa là đối tượng sẽ

được xoá đi khi thoát khỏi chương trình Giá trị mặc định của tham số này là False

Kiểu giá trị trả về của phương thức Add là đối tượng kiểu CommandBarControl, hoặc có thể là một trong các kiểu dữ liệu sau, tuỳ thuộc vào giá trị của tham số Type:

Ø Nếu Type= msoControlPopup: kiểu giá trị trả về là CommandBarPopup

Ø Nếu Type= msoControlButton: kiểu giá trị trả về là CommandBarButton

Phương thức Add chỉ tạo các đối tượng trống trên hệ thống thanh trình đơn Vì vậy, người lập trình cần phải gán thêm các thuộc tính khác cho những đối tượng mới này

Dưới đây là danh sách các thuộc tính của đối tượng kiểu CommandBarControl:

Thuộc tích Mô tả

BeginGroup Nếu gán bằng TRUE, phía trước điều khiển sẽ xuất hiện Separator Bar để ngăn

cách các nhóm trình đơn

BuiltIn Đây là thuộc tích chỉ đọc Trả về giá trị TRUE nếu điều khiển này là điều khiển đã

được xây dựng sẵn trong Excel

Caption Chuỗi văn bản sẽ được hiển thị trên trình đơn

Enabled Nếu bằng TRUE, người dùng có thể kích chuột lên đối tượng Nếu bằng FALSE,

người dùng sẽ không thể kích chuột, và điều khiển sẽ có màu xám

FaceID Số nguyên thể hiện cho hình ảnh sẽ được hiển thị bên cạnh đoạn văn bản được

hiển thị trên thanh trình đơn

Id Đây là thuộc tính chỉ đọc Là mã số xác định các trình đơn đã được định nghĩa

trước trong Excel

OnAction (Chỉ áp dụng với CommandBarButton) Tên của thủ tục VBA sẽ được thực thi khi

người dùng kích chuột vào MenuItem

ShortcutText (Chỉ áp dụng với CommandBarButton) Đoạn văn bản hiển thị phần phím tắt cho

MenuItem đó

Trang 11

1 Phác thảo cấu trúc của Menu như sau:

2 Viết mã lệnh cho từng MenuItem

‘MÃ LỆNH CHO MENUITEM2: TINH TONG

Trang 12

178

3 Tạo hệ thống Menu và gán mã lệnh cho từng MenuItem

Sub TaoMenu()

Dim cb As CommandBar

Dim cpop As CommandBarPopup

Dim cpop2 As CommandBarPopup

Dim cbtn As CommandBarButton

' LẤY THAM CHIẾU ĐẾN THANH TRÌNH ĐƠN

Set cb = Application.CommandBars("Worksheet Menu Bar")

' TẠO MENU1: “VI DU MENU” (CommandBarPopup)

Set cpop = cb.Controls.Add(Type:=msoControlPopup, Temporary:=True) cpop.Caption = "&Vi du Menu"

' TẠO MENUITEM2: “TINH TONG” (CommandBarButton)

' (thêm MenuItem vào MENU1)

Set cbtn = cpop.Controls.Add(msoControlButton, , , , True)

' Gán thuộc tính cho MenuItem

cbtn.Caption = "Tinh Tong" ‘ Gán tiêu đề

cbtn.OnAction = "Macro1" ‘ Gán mã lệnh

' TẠO MENUITEM3: “TINH TICH” (CommandBarButton)

Set cbtn = cpop.Controls.Add(msoControlButton, , , , True)

cbtn.Caption = "Tinh Tich"

cbtn.OnAction = "Macro2"

' TẠO MENU4: “MENU CAP 2” (CommandBarPopup)

' Đây là MenuItem bắt đầu một nhóm trình đơn khác

Set cpop2 = cpop.Controls.Add(msoControlPopup, , , , True)

cpop2.Caption = "Menu Cap 2"

' Thêm SeparatorBar vào phía trước Menu này

cpop2.BeginGroup = True

' TẠO MENUITEM5: “LUA CHON 1” (CommandBarButton)

Set cbtn = cpop2.Controls.Add(msoControlButton, , , , True)

cbtn.Caption = "Lua chon &1"

cbtn.OnAction = "Macro3"

' TẠO MENUITEM6: “LUA CHON 2” (CommandBarButton)

Set cbtn = cpop2.Controls.Add(msoControlButton, , , , True)

cbtn.Caption = "Lua chon &2"

cbtn.OnAction = "Macro4"

End Sub

Trong các câu lệnh tạo hệ thống trình đơn như trên, tham số Temporary của phương thức Add đều được gán bằng True, vì vậy, khi người dùng thoát khỏi Excel thì các hệ thống trình đơn vừa thêm vào sẽ được tự động xoá đi

8.4.3 Xoá trình đơn tuỳ biến

Khi người dùng chỉ đóng workbook mà không đóng Excel, trình đơn vừa được thêm vào vẫn còn được hiển thị trên hệ thống thanh trình đơn của Excel hoặc người dùng làm việc với một workbook khác mà không cần đến những tính năng trong trình đơn Như vậy, có những lúc cần phải xoá trình đơn vừa được thêm vào Để thực hiện điều này, có thể sử dụng phương thức Delete có trong đối tượng kiểu CommandBarControl hoặc CommandBarPopup hoặc CommandBarButton

Đoạn mã lệnh sau thực hiện xoá trình đơn “Vi du Menu” đã được tạo ra ở ví dụ trên

Trang 13

179

Sub XoaMenu()

Dim cb As CommandBar

Dim cbp As CommandBarPopup

‘Lấy tham chiếu đến thanh trình đơn

Set cb = Application.CommandBars("Worksheet Menu Bar")

On Error Resume Next

‘Tham chiếu đến trình đơn “Vi du Menu”

Set cbp = cb.Controls("Vi du Menu")

If Not IsNull(cbp) Then

Sub ResetMenu()

Dim cb As CommandBar

Dim cbp As CommandBarPopup

‘Lấy tham chiếu đến thanh trình đơn

Set cb = Application.CommandBars("Worksheet Menu Bar")

‘SỰ KIỆN Workbook_Open

Private Sub Workbook_Open()

‘Gọi thủ tục thực hiện việc tạo trình đơn

TaoMenu

End Sub

‘SỰ KIỆN Workbook_BeforeClose

Private Sub Workbook_BeforeClose(Cancel As Boolean)

‘Gọi thủ tục thực hiện việc xoá trình đơn

XoaMenu

End Sub

8.4.4 Gán phím tắt cho Menu Item

Gán phím tắt cho Menu Item thực chất là gán phím tắt cho Macro tương ứng với Menu Item đó (là Macro được gán cho Menu Item thông qua thuộc tính OnAction) Bổ sung đoạn mã lệnh sau vào cuối thủ tục TaoMenu ở ví dụ trước để gán phím tắt là CTRL+SHIFT+T cho Menu Item “Tinh Tong”:

‘Tạo phím tắt cho MenuItem

Application.MacroOptions _

Macro:="Macro1", _

HasShortcutKey:=True, _

ShortcutKey:="T"

Trang 14

180

Trong khi tạo hệ thống trình đơn “Vi du Menu” ở ví dụ trước, Menu Item “Tinh Tong” có thuộc tính OnAction được gán bằng “Macro1” Do đó để gán phím tắt cho Menu Item này, người lập trình phải thực hiện thông qua việc gán phím tắt cho Macro có tên là “Macro1”

Ngày đăng: 12/07/2014, 20:20

HÌNH ẢNH LIÊN QUAN

Hình IV-19: Điều khiển RefEdit - Tự động hóa trong thiết kế cầu đường part 7 doc
nh IV-19: Điều khiển RefEdit (Trang 7)
Hình IV-20: Thanh trình đơn trong Excel. - Tự động hóa trong thiết kế cầu đường part 7 doc
nh IV-20: Thanh trình đơn trong Excel (Trang 8)
Hình sau sẽ minh hoạ rõ hơn về cấu trúc của hệ thống trình đơn trong Excel. - Tự động hóa trong thiết kế cầu đường part 7 doc
Hình sau sẽ minh hoạ rõ hơn về cấu trúc của hệ thống trình đơn trong Excel (Trang 9)
Hình vẽ trong AutoCAD được tổ chức chủ yếu theo dạng vector và chuẩn lưu trữ dạng DWG  được biết đến như là chuẩn lưu trữ hình vẽ dạng vector hiệu quả nhất thế giới - Tự động hóa trong thiết kế cầu đường part 7 doc
Hình v ẽ trong AutoCAD được tổ chức chủ yếu theo dạng vector và chuẩn lưu trữ dạng DWG được biết đến như là chuẩn lưu trữ hình vẽ dạng vector hiệu quả nhất thế giới (Trang 16)
Hình V-1: Thành phần AutoCAD Objects và mô-đun ThisDrawing của dự án VBA trong - Tự động hóa trong thiết kế cầu đường part 7 doc
nh V-1: Thành phần AutoCAD Objects và mô-đun ThisDrawing của dự án VBA trong (Trang 20)
Hình V-2: Trình quản lý dự án VBA – VBA Manager. - Tự động hóa trong thiết kế cầu đường part 7 doc
nh V-2: Trình quản lý dự án VBA – VBA Manager (Trang 21)
Hình V-3: Hộp thoại mở dự án VBA. - Tự động hóa trong thiết kế cầu đường part 7 doc
nh V-3: Hộp thoại mở dự án VBA (Trang 22)
Hình V-4: Hộp thoại Macros - Tự động hóa trong thiết kế cầu đường part 7 doc
nh V-4: Hộp thoại Macros (Trang 24)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w