Hàm con trả về giá trị cho hàm chính..!!

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

trungtrung224

Thành viên mới
Tham gia
25/3/23
Bài viết
7
Được thích
-1
Hiện tại em đang có 1 hàm con tên là LastColumnLastRow để tìm giá trị cột cuối và hàng cuối cho hàm Main... Nhưng khi đọc xong và thoát khỏi hàm con thì giá trị của biến LastColumn và LastRow không trả về giá. Mấy a/c giúp e với... Em cảm ơn ạ.!!!

Sub Main()
Call LastColumnLastRow(2, 2)
Set chon = Range(Cells(2, 1), Cells(LastRow, LastColumn))
chon.Select
End Sub

Sub LastColumnLastRow(cot As Double, hang As Double)
LastColumn = Cells(cot, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, hang).End(xlUp).Row
End Sub
 
Hiện tại em đang có 1 hàm con tên là LastColumnLastRow để tìm giá trị cột cuối và hàng cuối cho hàm Main... Nhưng khi đọc xong và thoát khỏi hàm con thì giá trị của biến LastColumn và LastRow không trả về giá. Mấy a/c giúp e với... Em cảm ơn ạ.!!!

Sub Main()
Call LastColumnLastRow(2, 2)
Set chon = Range(Cells(2, 1), Cells(LastRow, LastColumn))
chon.Select
End Sub

Sub LastColumnLastRow(cot As Double, hang As Double)
LastColumn = Cells(cot, Columns.Count).End(xlToLeft).Column
LastRow = Cells(Rows.Count, hang).End(xlUp).Row
End Sub
Đọc bài 4 và 9 của bạn @befaint
 
Upvote 0
Cỡ người viết cặp hàm rác rưởi thế này thì tôi có giải thích cũng không hiểu.
Tuy nhiên, tôi giải thích đây cho bạn nào khác có thắc mắc:

Lỗi mà thớt bị là lỗi "tầm vực biến (scope of variable)"
Code của cặp hàm kia giả định rằng hai biến LastRow+LastColumn là biến toàn cục (global)
Vì không có khai báo chúng là biến toàn cục cho nên VBA, theo luật mặc định, tự động cho chúng là biến nội bộ (local).
Nối cách khác, LastRow+LastColumn trong Main hoàn toàn không có liên hệ gì với LastRow+LastColumn trong LastColumnLastRow. Chúng chỉ trùng tên thôi. Cũng như Tèo Tí nhà đầu ngõ hoàn toàn không kiên hệ gì với Tèo Tí cuối ngõ. Trừ phi trong xóm có thằng chuyên gõ cửa láng giềng ban đêm đẻ xin chút muối.

Chú: chuyện "con hàng xóm" không hoàn toàn là lời đùa bỡn. Tôi chỉ đem ví dụ cho biết khả năng "liên hệ" không thấy rõ ràng trước mắt.
Mà trường hợp này thì hơi gay, có thể ví như cặp LastRow+LastColumn thật ra được khai báo là biến toàn cục trong một Module khác.
 
Upvote 0
1. Hàm mà lại bắt đầu bằng sub hả bạn
2. Như bài #3 đã giải thích, do 2 biến lastrow và lastcol không phải biến toàn cục nên không dùng được ở sub khác là điều hiển nhiên
3. Bạn mới học thì nên khai báo đầy đủ biến, VBA có cái hay là viết có thể bỏ qua đoạn này làm code rất ngắn gọn, nhưng nó cũng chính là điểm yếu vì làm cho mình nhiều khi không thể hiểu được nó
 
Upvote 0
Có vẻ như 3 thầy không muốn truyền đạt kiến thức cho chủ bài đăng vì chưa cẩn thận trong học VBA
Muốn tiến xa trên con đường VBA, cần lúc này là tường minh, bạn à!
 
Upvote 0
Có vẻ như 3 thầy không muốn truyền đạt kiến thức cho chủ bài đăng vì chưa cẩn thận trong học VBA
Muốn tiến xa trên con đường VBA, cần lúc này là tường minh, bạn à!
Phân rích thiếu yếu tố thống kê cho nên trật lất.
Nguyên nhân chính nld rôi không thích người hỏi vbi mà còn viết tắt, lười biếng gõ từ cho đầy đủ.
 
Upvote 0
Web KT
Back
Top Bottom