Làm sao để truyền tham số là một vùng dữ liệu?

  • Thread starter AuDuongPhong
  • Ngày gửi
A

AuDuongPhong

Thành viên sơ cấp
21/9/04
4
0
0
112
The hell
#1
Trong các hàm của Excel thường có tham số là một vùng dữ liệu.

VD: Sum(A1:A7)

Tôi không biết phải khai báo như thế nào để truyền tham số cho hàm là 1 mảng như vậy?
Hoặc như dùng form thì người dùng có thể chọn khối một vùng, tôi phải khai báo kiểu gì đây?

Tôi đã thử làm mò là kiểu "Range" nhưng không biết xài.
Khai báo kiểu mảng trong hàm hay thủ tục thì tôi biết nhưng không biết làm sao để làm được như Excel.
 
L

levanduyet

Welcome
16/10/04
535
11
18
HCM
my.opera.com
#2
AuDuongPhong nói:
Trong các hàm của Excel thường có tham số là một vùng dữ liệu.

VD: Sum(A1:A7)

Tôi không biết phải khai báo như thế nào để truyền tham số cho hàm là 1 mảng như vậy?
Hoặc như dùng form thì người dùng có thể chọn khối một vùng, tôi phải khai báo kiểu gì đây?

Tôi đã thử làm mò là kiểu "Range" nhưng không biết xài.
Khai báo kiểu mảng trong hàm hay thủ tục thì tôi biết nhưng không biết làm sao để làm được như Excel.
_Kiểu ví dụ của bạn là Range.
_Bạn dùng đối tượng refEdit để lấy địa chỉ người dùng chọn.
_Bạn phải từ từ, đừng nóng vội. Bạn nên tham khảo bài hướng dẫn VBA theo đường link sau:
http://www.unifiedtech.net.au/webketoan/forum/showthread.php?t=5969
Chúc bạn thành công.
Lê Văn Duyệt.
Từ từ rồi bạn sẽ làm được thôi.
 
T

Tuanktcdcn

Lão già ham vui
18/6/04
548
51
28
41
Hà Nội
www.bluesofts.net
#3
SOCOT hàm trả về số cột khi người dùng đưa vào một mảng
Function SOCOT(ByVal ARR As Range) As Long
SOCOT = ARR.Columns.Count
End Function
ARR là một Object kiêu Ref, mảng trên EXCEL, trong môi trường VBA hiểu nó như là Range.
 
F

fthaoabc

Thành viên sơ cấp
14/8/06
6
1
0
41
Yên Bái
khkt.net
#4
Bình thường có sao đâu

AuDuongPhong nói:
Trong các hàm của Excel thường có tham số là một vùng dữ liệu.

VD: Sum(A1:A7)

Tôi không biết phải khai báo như thế nào để truyền tham số cho hàm là 1 mảng như vậy?
Hoặc như dùng form thì người dùng có thể chọn khối một vùng, tôi phải khai báo kiểu gì đây?

Tôi đã thử làm mò là kiểu "Range" nhưng không biết xài.
Khai báo kiểu mảng trong hàm hay thủ tục thì tôi biết nhưng không biết làm sao để làm được như Excel.
Kiểu Range là kiểu đã đăt tên trong Name (Insert/Name) của Excel. Bạn có thể tham khảo ví dụ:

Function TongBinhPhuong(VungCong)
Dim OHienTai, KetQua
For each OHienTai in VungCong
if isNumaric(OHienTai) then
KetQua=KetQua+OHienTai^2
End If
Next
TongBinhPhuong=KetQua
End Function
 
QDuc

QDuc

Thành viên thân thiết
3/6/06
254
18
18
Biển khơi
#5
Bộ nhớ ra sao, các bác ơi?!

Function TongBinhPhuong(VungCong)
Dim OHienTai, KetQua
For each OHienTai in VungCong
if isNumaric(OHienTai) then KetQua=KetQua+OHienTai^2
Next
TongBinhPhuong=KetQua
End Function
Theo như mình biết thì còn có thể khai báo hàm này như sau:
Fuction TgBFuong( VungCong As Range)
Hay:
Fuction TgBFuong( VungCong As Object)
Vậy xin các cao thủ VBA cho biết nên khai báo dòng nào theo 3 dòng trên là tối ưu? & còn khai báo kiểu nào khác 3 cách trên cũng xong không ạ?!
 
Sửa lần cuối:
T

Tuanktcdcn

Lão già ham vui
18/6/04
548
51
28
41
Hà Nội
www.bluesofts.net
#6
Bạn nên khai báo
Function TgBFuong(Byval VungCong as Range) as Variant
As Object chỉ dùng trong trường hợp đối tượng chưa xác định (có thể có nhiều đối tượng khác loại nhưng có thể dùng chung).
Theo mục đích xây dựng hàm của bạn thì có thể tham khảo hàm SUMSQ
SUMSQ(number1,number2, ...)

Number1, number2, ... are 1 to 30 arguments for which you want the sum of the squares. You can also use a single array or a reference to an array instead of arguments separated by commas.

Example

The example may be easier to understand if you copy it to a blank worksheet.

How?

Create a blank workbook or worksheet.
Select the example in the Help topic. Do not select the row or column headers.


Selecting an example from Help

Press CTRL+C.
In the worksheet, select cell A1, and press CTRL+V.
To switch between viewing the results and viewing the formulas that return the results, press CTRL+` (grave accent), or on the Tools menu, point to Formula Auditing, and then click Formula Auditing Mode.


1
2
A B
Formula Description (Result)
=SUMSQ(3, 4) Sum of the squares of 3 and 4 (25)
 

Thành viên trực tuyến

  • baonguyen84
  • Phần mềm BRAVO
  • anhdeptrai2511
  • tuyensinhm90
  • xuân phúc 16
  • Phần mềm FAST
  • ngochakipo
  • NoithatAhome
  • Huyền Mia
  • phamtienthanh
  • Doãn Thanh Nga

Xem nhiều