Biến toàn cục và hàm toàn cục (1 người xem)

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

sonlamhpu

Thành viên chính thức
Tham gia
20/8/09
Bài viết
84
Được thích
10
Chào các anh!
Em mới chập chững bước vào lập trình excel, một điều khá thú vị và hay.
Em muốn hỏi các anh một vài điều, mong các anh chỉ giáo
Hiện tại em đang viết một chương trình để lọc filter, có một biết là lastcell, và một hàm đặt trong phần module để tìm được lastcell đó, vậy em muốn hỏi các anh:
1. Làm thế nào để khai báo lastcell là biến toàn cục (vì trong tất cả các hàm em đều dùng biến lastcell này).
2. Để lastcell có giá trị, thì phải có một hàm để lấy giá trị cho nó, vậy làm cách nào để dùng hàm toàn cục được (khi bấm vào button để xử lý dữ liệu lọc, thì lastcell nó có giá trị rồi, và các sub trong module sẽ lấy giá trị của last cell đó để làm giá trị cho hàm đó).
Mong các anh chỉ giáo cho ạ
 
Chào các anh!
Em mới chập chững bước vào lập trình excel, một điều khá thú vị và hay.
Em muốn hỏi các anh một vài điều, mong các anh chỉ giáo
Hiện tại em đang viết một chương trình để lọc filter, có một biết là lastcell, và một hàm đặt trong phần module để tìm được lastcell đó, vậy em muốn hỏi các anh:
1. Làm thế nào để khai báo lastcell là biến toàn cục (vì trong tất cả các hàm em đều dùng biến lastcell này).
2. Để lastcell có giá trị, thì phải có một hàm để lấy giá trị cho nó, vậy làm cách nào để dùng hàm toàn cục được (khi bấm vào button để xử lý dữ liệu lọc, thì lastcell nó có giá trị rồi, và các sub trong module sẽ lấy giá trị của last cell đó để làm giá trị cho hàm đó).
Mong các anh chỉ giáo cho ạ

có một biết là lastcell : tuỳ theo nó nằm trong module nào?

1. Làm thế nào để khai báo lastcell là biến toàn cục (vì trong tất cả các hàm em đều dùng biến lastcell này).
(tất cả các hàm đều dùng vẫn không có nghĩa là phải toàn cục nó. Các hàm đều có thể nhận nó theo dạng tham số.)
Biến toàn cục thì khai bằng tiền tố "Pubblic"
public bienTC as Range

2. Để lastcell có giá trị, thì phải có một hàm để lấy giá trị cho nó
Dùng cặp hàm này
' hàm lấy trị
Public Function GetTriBienTC() as Range
IF Not bienTC Is Nothing Then
Set GetTriBienTC = bienTC
Else
MsgBox "Biến này chưa được đặt, yêu cầu xét lại"
End If
End Function
' hàm gán trị
Public SetTriBienTC(byVal oNaoDo as Range) as Range
Set bienTC = oNaoDo
End Function

làm cách nào để dùng hàm toàn cục được
Từ khoá "Public" ở trên cho phép chúng được dùng toàn cục. Nếu muốn chắc ăn thì thêm tên module vào trước chúng. (cái này tôi đã mách một vài lần rồi, chịu khó tìm)

Bạn hỏi gì tôi chỉ nấy thôi chứ dùng biến toàn cục là điều mà người viết code nên tránh, cức chẳng đã mới phải dùng.
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn bác nhiều lắm, tại vì em phải dùng biết này rất rất nhiều, vì khi filter, em muốn lấy giá trị ô cuối cùng, từ đó ra được hàng và cột cuối cùng cùng phần range chọn để tính toán. Vì khi người dùng muốn lọc giá trị và lấy giá trị đã lọc, phần dữ liệu gốc không cố định (phần tiêu đề cố định, phần gốc thì mỗi tháng nhập một lần, có thể là 100 row, có thể là 1000 row, nên mình không thể khai báo từ lúc chạy được). Nên em mới phải dùng biến toàn cục, nhưng biến toàn cục thì phải có hàm để đẩy giá trị cho nó. Nên em mới hỏi tới hàm toàn cục.
 
Upvote 0
Biến toàn cục chả cần phải có hàm để đẩy giá trị cho nó. Một khi nó đã là public thì muốn truy muốn gán cứ việc làm thẳng.

Cặp hàm Get/Set tôi đề cập trước đó là do bạn hỏi. Thật sự chúng không cần thiết.
 
Upvote 0

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

Back
Top Bottom