- Tham gia
- 3/7/07
- Bài viết
- 4,946
- Được thích
- 23,208
- Nghề nghiệp
- Dạy đàn piano
Tôi đang tập tành vọc VBA. Tôi có làm vài cái Form, và những Combobox cũng như nhiều thứ khác truy xuất đến dữ liệu trong bảng tính. Những dữ liệu này đã được đặt Name hoặc đó là những Table, để dễ nhớ, và cũng dễ truy xuất hàng, cột...
Vấn đề là, Excel không nhớ được Name (hoặc Table) nào là của WorkSheet nào. Do đó, nếu lỡ như mà đang mở một lúc 2 bảng tính (hoặc nhiều hơn), thì khi chạy Form, tôi bị VBA báo lỗi tùm lum. Tức quá, tôi gài cái lệnh này vào trước khi chạy một Form:
Mọi việc trong có vẻ ổn. Bởi bi giờ thì Excel đã biết là dữ liệu cần truy xuất lấy ở Workbook nào.
Nhưng... Lại có cái dở là, lỡ như tôi Save as Workbook đó với tên khác, thì công toi... hoặc là lại phải lục hết mấy cái dòng lệnh như ở trên đây, đổi tên của Workbook thành tên mới. Thật mắc công quá.
Và tôi lại mày mò tạo một cái biến, cái biến này chính là tên của Workbook, và có thể dùng để khai báo trong suốt quá trình làm việc. Nghĩa là ngay khi mở Workbook có chứa những cái Form này ra, thì có một lệnh sẽ chạy, chụp lấy cái tên của Workbook, và sử dụng chúng cho mỗi khi cần chạy một Form nào đó.
Tôi đã nghĩ đến trò sử dụng sự kiện Workbook_Open, và làm cái code sau:
Và cứ nghĩ là sẽ dùng cái biến này thay thế vào đây được:
Nhưng... VBA nó hổng chịu nhớ AAA là cái quái gì. Và đương nhiên là nó tô vàng khè cái dòng lệnh trên đây.
Vậy, cho tôi hỏi, tôi phải khai báo AAA như thế nào để VBA hiểu và nhớ mãi... cho đến khi nào tôi đóng cái Workbook đó lại ?
À, xin nói thêm, lão Cheettit có biểu tôi khai báo cái này ở trong module:
Vấn đề là, Excel không nhớ được Name (hoặc Table) nào là của WorkSheet nào. Do đó, nếu lỡ như mà đang mở một lúc 2 bảng tính (hoặc nhiều hơn), thì khi chạy Form, tôi bị VBA báo lỗi tùm lum. Tức quá, tôi gài cái lệnh này vào trước khi chạy một Form:
PHP:
Windows("DMHH.xlsm").Activate
Nhưng... Lại có cái dở là, lỡ như tôi Save as Workbook đó với tên khác, thì công toi... hoặc là lại phải lục hết mấy cái dòng lệnh như ở trên đây, đổi tên của Workbook thành tên mới. Thật mắc công quá.
Và tôi lại mày mò tạo một cái biến, cái biến này chính là tên của Workbook, và có thể dùng để khai báo trong suốt quá trình làm việc. Nghĩa là ngay khi mở Workbook có chứa những cái Form này ra, thì có một lệnh sẽ chạy, chụp lấy cái tên của Workbook, và sử dụng chúng cho mỗi khi cần chạy một Form nào đó.
Tôi đã nghĩ đến trò sử dụng sự kiện Workbook_Open, và làm cái code sau:
PHP:
Private Sub Workbook_Open()
AAA = ActiveWorkbook.Name
End Sub
Và cứ nghĩ là sẽ dùng cái biến này thay thế vào đây được:
PHP:
Windows(AAA).Activate
Vậy, cho tôi hỏi, tôi phải khai báo AAA như thế nào để VBA hiểu và nhớ mãi... cho đến khi nào tôi đóng cái Workbook đó lại ?
À, xin nói thêm, lão Cheettit có biểu tôi khai báo cái này ở trong module:
Nhưng... không ăn thua gì hết. Khi chạy Form, VBA nó vẫn hỏi AAA là cái gì ?Public AAA as String
Lần chỉnh sửa cuối: