Cách khai báo biến cục bộ và toàn cục trong VBA (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

thinh.cao

Thành viên mới
Tham gia
30/3/09
Bài viết
27
Được thích
9
Mình đang chập chững về ứng dụng VBA trong công việc. có một số thắc mắc không biết hỏi ai, nhờ các bạn đã biết giúp. lần này là nhờ về vấn đề khai báo biến.

1. khai báo biến toàn cục trong module 1 thì có thể sử dụng trong module 2, module n?
2. Khai báo biến toàn cục trong module thì có thể sử dụng trong form được không và ngược lại?
3. Một số trường hợp mình không khai báo biến cục bộ trong form và có gán giá trị nhưng thấy vẫn cho kết quả đúng. vậy việc khai báo biến ảnh hưởng thế nào đến kết quả?
4. khai báo nhiều biến có ảnh hưởng đáng kể đến tốc độ hoạt động của ứng dụng.

Cảm ơn các bạn/anh/chị đã hỗ trợ.
Thinh.cao
 
Mình đang chập chững về ứng dụng VBA trong công việc. có một số thắc mắc không biết hỏi ai, nhờ các bạn đã biết giúp. lần này là nhờ về vấn đề khai báo biến.

1. khai báo biến toàn cục trong module 1 thì có thể sử dụng trong module 2, module n?
2. Khai báo biến toàn cục trong module thì có thể sử dụng trong form được không và ngược lại?
3. Một số trường hợp mình không khai báo biến cục bộ trong form và có gán giá trị nhưng thấy vẫn cho kết quả đúng. vậy việc khai báo biến ảnh hưởng thế nào đến kết quả?
4. khai báo nhiều biến có ảnh hưởng đáng kể đến tốc độ hoạt động của ứng dụng.

Cảm ơn các bạn/anh/chị đã hỗ trợ.
Thinh.cao

*Biến toàn cục có thể sử dụng trong toàn bộ dự án !
*Việc khai báo nhiều biến không ảnh hưởng đến tốc độ, chỉ ảnh hưởng đến bộ nhớ,( ví dụ 1biến string chiếm 4byte)
* Trong vba, bạn có thể không cần khai báo biến sau từ khoá Dim, chương trình sẽ tự động coi đó là biến kiểu variant tuy nhiện Nếu bạn khai báo biến rõ ràng thì tốc độ sẽ nhanh hơn nếu bạn không khai báo
 
Upvote 0
*Biến toàn cục có thể sử dụng trong toàn bộ dự án !
*Việc khai báo nhiều biến không ảnh hưởng đến tốc độ, chỉ ảnh hưởng đến bộ nhớ,( ví dụ 1biến string chiếm 4byte)
* Trong vba, bạn có thể không cần khai báo biến sau từ khoá Dim, chương trình sẽ tự động coi đó là biến kiểu variant tuy nhiện Nếu bạn khai báo biến rõ ràng thì tốc độ sẽ nhanh hơn nếu bạn không khai báo

Thế "lày" "nà" thế "lào" nhẻy??? +-+-+-+
 
Upvote 0
Mình đang chập chững về ứng dụng VBA trong công việc. có một số thắc mắc không biết hỏi ai, nhờ các bạn đã biết giúp. lần này là nhờ về vấn đề khai báo biến.

1. khai báo biến toàn cục trong module 1 thì có thể sử dụng trong module 2, module n?
2. Khai báo biến toàn cục trong module thì có thể sử dụng trong form được không và ngược lại?
3. Một số trường hợp mình không khai báo biến cục bộ trong form và có gán giá trị nhưng thấy vẫn cho kết quả đúng. vậy việc khai báo biến ảnh hưởng thế nào đến kết quả?
4. khai báo nhiều biến có ảnh hưởng đáng kể đến tốc độ hoạt động của ứng dụng.
.

1. và 2. Nếu biến ấy bạn có khai báo là public. Biến toàn cục được chứa trên phần nhớ chung (heap). Tức là nó luôn luôn hiện hữu. Nhưng nếu nó là private thì các modules khác không nhìn thấy nó cho nên không làm gì được.

Khác với biến cục bộ hoàn toàn chứa trên phần nhớ riêng của hàm. Mỗi lần hàm bắt đầu thì nó được khởi trị. Khi hàm chạy xong thì nó bị huỷ bỏ.

3. Biến không được khai báo thì compiler tự động coi như nó là variant, tức là loại biến kết nối trễ - VBA sẽ định kiểu và phát cho vùng nhớ vào lúc chạy tới dòng code này. Vì vậy chúng sẽ chạy chậm hơn. Việc khai báo biến không ảnh hưởng đến kết quả trừ phi bạn dùng những biểu thức có hiểu ngầm phép ép kiểu. Khi dùng variant ai cũng biết có những lúc phải thử kiểu của nó.

4. Đối với những người phải hỏi câu này thì khai báo biến thừa không ảnh hưởng gì cả.
 
Upvote 0
4. Đối với những người phải hỏi câu này thì khai báo biến thừa không ảnh hưởng gì cả.
Cái này CHUẨN đây!
------------------------------------------------------
Ngày trước mình học VBA đơn giản lắm: Ứng dụng cho công việc đến đâu, mình nghiên cứu đến nấy.
Lúc đầu thậm chí chỉ record macro rồi chỉnh lại đôi chút, không khai báo 1 biến nào cả (vì mình cũng chưa biết BIẾN để làm cóc khô gì)
Sau này, khi viết được những đoạn code dài hơn 1 trang, với dữ liệu vài ngàn dòng và có suy nghĩ phải tăng tốc thì mình mới bắt đầu nghiên cứu này nọ...
Mà thật ra cũng dễ thôi: Thí nghiệm và... cày cho thật nhiều rồi tự mình rút ra "chân lý" còn hơn ngồi đọc nguyên quyển sách mà chỉ phân vân này nọ chứ không bắt tay vào thực nghiệm
 
Upvote 0
*Biến toàn cục có thể sử dụng trong toàn bộ dự án !
*Việc khai báo nhiều biến không ảnh hưởng đến tốc độ, chỉ ảnh hưởng đến bộ nhớ,( ví dụ 1biến string chiếm 4byte)
* Trong vba, bạn có thể không cần khai báo biến sau từ khoá Dim, chương trình sẽ tự động coi đó là biến kiểu variant tuy nhiện Nếu bạn khai báo biến rõ ràng thì tốc độ sẽ nhanh hơn nếu bạn không khai báo
Cảm ơn các bạn nhiều nhé, tuy nhiên mình cũng nói, dữ liệu của mình luôn từ 3000-15000 dòng và > 20 cột được export từ SAP, mà SAP xuất ra excel thì nhìn rất là....nhảm, khi xử lý, nếu tác động một chút là ảnh hưởng đáng kể đên tốc độ.

Có một chút góp ý với các bạn level cao và có thâm niên trên diễn đàn nhé, nếu không phải các bạn bỏ qua giúp, còn nếu thấy bực thì delete nick của mình luôn đi cũng được. Sự đóng góp cho diễn đàn này thì người công nhiều, người công ít, người giỏi có, người chưa giỏi có nhưng tất cả đều có chung một sự quan tâm về excel. Mình chắc chắn một điều rằng có rất nhiều bạn giỏi hơn mình rất, rất nhiều. tuy nhiên, số bạn đã được học VB, C+, Pascal ... sớm hơn mình thì không nhiều đâu, mấy cái này mình được học bài bản từ trước năm 1998. Sau khi ra trường, cơm, áo, gạo tiền và cơ duyên nên mình phải làm ngành khác và muốn thay đổi nghề của mình. sau đó mình có cơ hội phát triển nghề nghiệp bản thân bằng một nghề khác cái nghề mà mình đã học.
và nay, muốn quay lại chút ít để phục vụ một số công việc mà mình muốn ( có thể chẳng cần VBA vẫn làm được, vì chẳng phải ai cũng cần VBA) nên mình đi học lại một khóa mấy tháng lúc rảnh, cũng gọi là học cho vui rồi lên trên diễn đàn này tham khảo, xin ý góp ý, xin ý kiến..., Nhưng đôi lúc có vài bạn có thâm niên lâu trên diễn đàn hoặc có kinh nghiệm, kỹ năng tốt hơn trả lời hơi sốc, Đại loại như kiểu ta đây là chuyên nghiệp nên gọi đối phuơng những câu như: "Đối với những người phải hỏi câu này thì khai báo biến thừa không ảnh hưởng gì cả".
Việc này mình gặp không chỉ một lần đâu nhé, những bạn đó giỏi hơn mình thì cũng có người hơn các bạn và mỗi người một sở trường khác nhau. không ai là một người thầy toàn diện và khiêm tốn thì không thừa. Có đôi lời chia sẻ, nghĩ sao thì tùy các bạn.

Dù sao cũng cảm ơn vì đã hỗ trợ kiến thức cho mình
Thân,
thinh.cao
 
Upvote 0
Sốc!!! ha ha.

Đã là dân trình độ SAP thì mày mò với VBA chi cho bẩn tay. Ở địa vị ấy thì có cả một đống lính, thảy cho chúng làm khoẻ ru.

Học bài bản C++ mà không biết cả luật private/public, vùng nhớ heap/stack. Bài ở đâu thế?

Làn việc với hàng trăm ngàn, hàng triệu mẫu dữ liệu mà không biết kiên nhẫn. Tự ái vặt.
 
Upvote 0
Sốc!!! ha ha.

Đã là dân trình độ SAP thì mày mò với VBA chi cho bẩn tay. Ở địa vị ấy thì có cả một đống lính, thảy cho chúng làm khoẻ ru.

Học bài bản C++ mà không biết cả luật private/public, vùng nhớ heap/stack. Bài ở đâu thế?

Làn việc với hàng trăm ngàn, hàng triệu mẫu dữ liệu mà không biết kiên nhẫn. Tự ái vặt.

hahaha... mình kết nhất là cái câu "TỰ ÁI VẶT"...
 
Upvote 0
Sốc!!! ha ha.

Đã là dân trình độ SAP thì mày mò với VBA chi cho bẩn tay. Ở địa vị ấy thì có cả một đống lính, thảy cho chúng làm khoẻ ru.

Học bài bản C++ mà không biết cả luật private/public, vùng nhớ heap/stack. Bài ở đâu thế?

Làn việc với hàng trăm ngàn, hàng triệu mẫu dữ liệu mà không biết kiên nhẫn. Tự ái vặt.

mình quen nhiều sếp, cái gì cũng "để bọn trẻ làm" nên cuối cùng là không biết làm.
 
Upvote 0
mình quen nhiều sếp, cái gì cũng "để bọn trẻ làm" nên cuối cùng là không biết làm.
Chỉ là giao lưu học hỏi thôi, mình nghĩ là đá soáy cho vui cho có tí không khí ấy mà. Mình giờ ít spam nhưng vẫn đọc bài của các bạn đôi khi cũng tự cười một mình " thấy vui"
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom