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

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi AuDuongPhong, 29 Tháng ba 2005.

4,951 lượt xem

  1. AuDuongPhong

    AuDuongPhong Thành viên sơ cấp

    Bài viết:
    4
    Đã được thích:
    0
    Nơi ở:
    The hell
    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.
     
    #1
  2. levanduyet

    levanduyet Welcome

    Bài viết:
    535
    Đã được thích:
    11
    Giới tính:
    Nam
    Nơi ở:
    HCM
    _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.
     
    #2
  3. Tuanktcdcn

    Tuanktcdcn Lão già ham vui

    Bài viết:
    548
    Đã được thích:
    50
    Nơi ở:
    Hà Nội
    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.
     
    #3
  4. fthaoabc

    fthaoabc Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    1
    Nơi ở:
    Yên Bái
    Bình thường có sao đâu

    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
     
    #4
  5. QDuc

    QDuc Thành viên thân thiết

    Bài viết:
    254
    Đã được thích:
    18
    Nơi ở:
    Biển khơi
    Bộ nhớ ra sao, các bác ơi?!

    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 ạ?!
     
    Last edited: 14 Tháng tám 2006
    #5
  6. Tuanktcdcn

    Tuanktcdcn Lão già ham vui

    Bài viết:
    548
    Đã được thích:
    50
    Nơi ở:
    Hà Nội
    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
     
    #6

Chia sẻ trang này