Trao đỗi dử liệu qua lại giữa 2 SUB

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Trong công thức Excel, khi ta đặt 1 name nào đó thì ta hoàn toàn có thể dùng nó trong toàn bộ công thức ở mọi nơi trong file... Vậy còn trong VBA thì sao?
Tôi lấy ví dụ trong file tôi có 2 SUB: Sub1 tôi có gắn 1 biến bằng 1 giá trị nào đó... Vậy làm sao tôi có thể sử dụng biến này cho Sub2
Ví dụ:
Mã:
Sub Tuan01()
   [B]TVB[/B] = gì gì đó...
   ....
End Sub
Khi chạy Sub Tuan02, tôi có thể dùng lại cái TVB mà tôi đã gán trong Sub Tuan01 ko? Nếu dc thì sẽ làm thế nào? Xin các cao thủ hãy cho 1 ví dụ cụ thể!
ANH TUẤN
 
Anh sử dụng tên biến hay giá trị của biến? Nếu tương tự như name trong excel, thì anh chỉ cần khai báo biến TVB bằng từ khóa Public ở đầu module. Tuy nhiên name ở trong excel như anh nói không hẳn là một biến, mà là hằng thì đúng hơn... Nhưng theo ý hiểu của em thì Sub làm gì có dữ liệu mà trao đổi, nó chỉ là tập những câu lệnh thao tác trên một CSDL nào đó...
 
Upvote 0
Có lẽ tôi chưa rành về VBA lắm nên diễn đạt khó hiểu... Ý tôi là giã sử cái TVB ấy nằm trong Sub Tuan001, sau khi chạy Sub này nó đạt dc 1 giá trị nào đó, chẳng hạn =15 (tức là chạy Tuan01 xong nó mới =15)... Vậy khi tôi chạy Sub Tuan02 thì sẽ dùng cái TVB ấy như thế nào? (tức là dùng giá trị 15 mà TVB đã đạt dc khi chạy Sub Tuan01 ấy)
Còn về vụ name thì chưa hẳn là hằng số đâu nha.. Tôi có thể tạo 1 name biến động tùy thích (thế mới gọi là name động).. Chẳng hạn động theo Column() hoặc Row()
Nếu có thể dc xin các bạn cho tôi 1 ví dụ cụ thể ngắn gọn với 2 Sub như tôi đã trình bày ở trên
ANH TUẤN
 
Upvote 0
Oh... oh... Cảm ơn Lam_AO.. Tôi làm dc rồi.. thì ra là Public...
Hay quá! Vừa test xong... Tìm trong Help nhưng cũng phải biết là tìm cái gì.. May mắn có bạn nhắc nhở, tôi gõ vào Help chử Public, thế là đã có hướng dẫn cụ thể!
Một lần nữa cảm ơn bạn
ANH TUẤN
 
Upvote 0
Lam_A0 đã viết:
Nhưng theo ý hiểu của em thì Sub làm gì có dữ liệu mà trao đổi, nó chỉ là tập những câu lệnh thao tác trên một CSDL nào đó...
Vừa đúng lại vừa sai.
Vì là bạn chưa xem qua các Sub có tham số :
Đây là 1 VD đơn giản:
Tạo trong Module

PHP:
Sub TaoChu(Sh As String)
    On Error GoTo thoat
    Worksheets(Sh).Range("B5").Value = "GIAI PHAP EXCEL"
thoat:
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub test()
    TaoChu ("Sheet2")
End Sub
Khi bạn muốn Sheet3 có chữ trên thì chỉ cần : TaoChu("Sheet3")


Thân!
 
Upvote 0
Em biết việc truyền tham số của sub này, nhưng có lẽ tại em hiểu nhầm khái niệm dữ liệu mà anhtuan nhắc tới. Dù sao đi nữa, em nghĩ ví dụ anh đưa ra cũng không thể gọi là "truyền dữ liệu" giữa hai sub được...

Hơ, em nhầm lẫn hết rồi!--=0 --=0 Nhờ Mod, SMod nào đi ngang xóa hộ
Thanks!
 
Lần chỉnh sửa cuối:
Upvote 0
Lam_A0 đã viết:
Em biết việc truyền tham số của sub này, nhưng có lẽ tại em hiểu nhầm khái niệm dữ liệu mà anhtuan nhắc tới. Dù sao đi nữa, em nghĩ ví dụ anh đưa ra cũng không thể gọi là "truyền dữ liệu" giữa hai sub được...

Tớ không nói đến bài tập, tớ chỉ nói đến khái niệm mà cậu đưa ra thôi
Nguyên văn bởi Lam_A0
Nhưng theo ý hiểu của em thì Sub làm gì có dữ liệu mà trao đổi, nó chỉ là tập những câu lệnh thao tác trên một CSDL nào đó..

Dữ liệu là bất cứ cái gì, miễn nó được thể hiện trên hệ thống nhị phân.

Vì thế chỉ cần SUB1 hoạt động dựa vào các giá trị (Dữ liệu - Không chỉ là số) của SUB2 thì có nghĩa là SUB2 đang truyền dữ liệu cho SUB1 (Một chiều)

Thân!
 
Upvote 0
Mr Okebab đã viết:
Dữ liệu là bất cứ cái gì, miễn nó được thể hiện trên hệ thống nhị phân.

Vì thế chỉ cần SUB1 hoạt động dựa vào các giá trị (Dữ liệu - Không chỉ là số) của SUB2 thì có nghĩa là SUB2 đang truyền dữ liệu cho SUB1 (Một chiều)
Hi, vấn đề này không phức tạp, chỉ là quan điểm của từng người, sau này em sẽ tìm thuật ngữ tiếng anh xài cho chắc!
Thân!
 
Upvote 0
Web KT

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

Back
Top Bottom