- Tham gia
- 6/8/06
- Bài viết
- 3,260
- Được thích
- 3,790
Trước hết xin cảm ơn bác rất nhiều.levanduyet đã viết:To: Okebab,
1.
Nếu khai báo như trên thì chỉ có biến STT là kiểu IntegerMã:Dim HC, SL, i, STT As Integer
Còn các biến HC, SL, i là kiểu Variant
Đối với Visual Basic 6.0 thì cũng gặp trường hợp giống vậy. Nếu dùng Visual Basic .Net thì khai báo như trên thì các biến đều là biến kiểu Integer.
2.
Thông thường khi viết một thủ tục, chúng ta sẽ gọi thủ tục đó từ Menu hoặc Shortcut.Mã:HC = Sheet1.Range("B65000").End(xlUp).Row
Nếu viết như trên thì sẽ bị gặp lỗi một khi bạn gọi thủ tục mà workbook khác đang Active. Đây là lỗi thường gặp khi chúng ta viết các Add-In. Ví dụ như Add-in của bác phamduylong.
Chúng ta nên tập viết code như sau:
Lê Văn DuyệtMã:HC = Thisworkbook.Worksheets("Sheet1").Range("B65000").End(xlUp).Row
- Có lẽ là như vậy, vì chẳng qua học lỏm lâu ngày thành thói quen chứ cũng không biết rằng khai báo như vậy là sai (so với mục đích) - Đang nói về VBA. Chắc lần sau cứ mỗi thằng 1 DIM cho chắc ăn. Cảm ơn bác.
- Code của bác sao dài thế : Thực ra có 2 điều kiện để đảm bảo là code lấy dữ liệu trên File mình đang báo cáo :
- Trong một chương trình, tên các Sheet trong VBA luôn được thay đổi để đảm bảo rằng nó không nhầm với sheet của . . . file khác : VD : S001; S002; S003. Ở đây gọi là Sheet1 chỉ là VD thôi
- Khi bắt đầu vào code em đã cho Sheet1 (của File báo cáo) Active rồi (do em đặt code của nó ở bên dưới)
Tất nhiên code của bác luôn đủ (thế mới khổ), tuy nhiên chính vì thế code luôn dài. Chính vì vậy nên đặt tên lại các sheet trong VBA và dùng nó khi viết code thì nhanh và chính xác hơn nhiều.
Ở mỗi một mức độ sẽ có code cho riêng nó (addins khác, 1 sub được gọi và chạy trực tiếp khác). Nếu lấy 1 cái để xét về tổng thể thì e . . . quá sức em.
Cảm ơn bác.
Thân!
Ở mỗi một mức độ sẽ có code cho riêng nó (addins khác, 1 sub được gọi và chạy trực tiếp khác). Nếu lấy 1 cái để xét về tổng thể thì e . . . quá sức em.

Cảm ơn bác.
Thân!