Chương 24 - Excel VBA Programming For Dummies

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,436
Nghề nghiệp
Bác sĩ
Mười câu hỏi và trả lời VBA

Bài dịch của Workman​

Top mười câu hỏi VBA

1/ Tôi tạo một hàm VBA. Khi tôi cố sử dụng công thức, công thức này trả lại giá trị #NAMES?. Chuyện gì thế?
- Bạn để hàm của bạn ở sai vị trí. Mã lệnh VBA phải ở trong VBA Module. Không để trong module của một sheet hay ThisWorkbook

2/ Tôi có thể sử dụng VBA macro recorder để ghi lại tất cả macro không?
- Không. Thông thường bạn chỉ sử dụng công cụ này để ghi lại những macro đơn giản, là điểm bắt đầu cho một macro phức tạp hơn. Ta không thể ghi lại những biến, vòng lặp hay những cấu trúc lập trình phức tạp khác. Hơn nữa, dụng VBA macro recorder không thể ghi lại hàm

3/ Làm thế nào để không để người khác nhìn trộm mã VBA của tôi
1. trong VBE, chọn Tools-VBA Project Property
2. trong hộp thoại, click vào thẻ Protection và chọn Lock Project for Viewing
3. Gõ mật mã (password) hai lần và click OK.

Làm như thế sẽ không cho người khác nhìn trộm mã của mình, nhưng không đảm bảo 100% an toàn. Có nhiều công cụ bẻ khóa lắm

4/ Có mã VBA nào làm tăng số dòng và cột trong Worksheet không?
- Không có. Hết cách rồi.

5/ Khi tôi tham chiếu đến một Worksheet trong mã VBA, tôi nhận được một thông báo “subscript out of range”. Tôi không sử dụng bất kỳ một subscript nào cả? Chuyện gì thế?
- Lỗi này xảy ra khi bạn cố sử dụng một yếu tố nào đó không tồn tại. ví dụ, câu lệnh sau sẽ báo lỗi nếu trong Worksheet hiện hành không có một sheet nào gọi là “mysheet” cả,

Set X = activeworkbook.sheets(“mysheet”)

6/ Có câu lệnh VBA nào chọn một vùng từ ô hiện hành đến dòng hay cột cuối cùng?

Đây là mã lệnh VBA tương đương với tổ hợp Ctrl+Shift+Down

Range (ActiveCell, ActiveCell.End(xlDown)).select

Để chọn vùng theo hướng khác, sử dụng hằng xlToLeft, xlToRight, hoặc xlUp

7/ Làm sao để chương trình VBA của tôi chạy nhanh như thỏ
Dưới đây là một vài mánh:

- nhớ khai tất cả biến (sử dụng Option Explicit trong từng phần khai báo để buộc bạn phải khai tất cả biến)
- nếu bạn tham chiếu đến một Object (như một Range chẳng hạn) nhiều hơn một lần, hãy tạo một biến Object sử dụng từ khóa Set
- sử dụng With-End With càng nhiều càng tốt
- nếu macro viết trong một Worksheet có rất nhiều công thức phức tạp, hãy đặt Excel ở tình trạng Manual Calculate
- nếu macro ghi lại dữ liệu vào Worksheet hãy tắt chức năng “Screen Update” bằng cách sử dụng Application.ScreenUpdate = False

8/ Làm thế nào để tôi hiển thị nhiều tin trong một MsgBox ?
- cách dễ nhất là tạo ra một tin dưới dạng một biến văn bản, sử dụng hằng vbNewLine để tách hàng. Dưới đây là một ví dụ đơn giản:

Msg = “Ban chon: “ & vbNewLine
Msg = Msg & UserAns
MsgBox Msg

9/ Tôi đã xóa hết tất cả macro nhưng Excel vẫn hỏi tôi có Enable Macro không tôi mở Workbook ?
- Module trống chính là nguyên nhân gây nên hiện tượng trên. Nếu bạn có một Module trống, hãy chọn Remove Module. Kiểm tra lại This Workbook và các Sheet khác để đảm bảo không còn macro nào nữa.

10/ Tại sao dấu gạch nối (cái dấu _ ấy) không chịu chạy
- Dấu gạch nối thực ra có 2 ký tự một khoảng trống sau đó mới tới dấu _. Bạn phải đảm bảo có cả 2 ký tự trên sau đó nhớ nhấn Enter
 
Web KT
Back
Top Bottom