Tham số trong User Defined Function
Tôi có 1 hàm tự tạo có dạng:
Function Test(Clls As Range) As String
—————-
—————-
—————-
End Function
Vấn đề tôi muốn hỏi ở đây là làm cách nào để khi tôi gõ:
=Test() (không có tham số Clls)
thì UDF tự động hiểu tôi đang muốn nói đến Clls chính là ActiveCell
gần giống như khi ta sử dụng hàm COLUMN(), không có tham số nghĩa là lấy COLUMN tại ActiveCell
Chắc là vầy:
Function OptionalCell(Optional Rng As Range) As String
If Rng Is Nothing Then Set Rng = Selection
OptionalCell = Rng.Address
End Function
www.giaiphapexcel.com/diendan/threads/tham-s%E1%BB%91-trong-user-defined-function.11359/
Khóa học SprinGO phù hợp
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Cảm ơn anh Sa
Em hỏi câu này là để giãi quyết bài toán Get Column letter = VBA
Option Explicit
Function Coleter(Optional Clls As Range) As String
Dim Adr As String
If Clls Is Nothing Then Set Clls = ActiveCell
Adr = Cells(1, Clls.Column).Address(0, 0)
Coleter = Replace(Adr, 1, "")
End Function
Anh xem giúp đã ổn chưa!
Có lẻ bạn hiểu sai ý tôi về mục đích của hàm này!
Giống như hàm COLUMN() vậy, nếu tôi ghi rỏ tham chiếu vào thì đương nhiên sẽ lấy Column letter của tham chiếu đó, bằng ngược lại tôi chẳng ghi gì thì nó phải tự hiểu là ActiveCell
Chỉ vậy thôi
(Bạn click sang cột khác thì kết quả lấy theo tên cột mới là đúng rồi còn gì)
Không hiểu ý bạn cho lắm!
Tôi dùng hàm này để lấy tên cột tại 1 cell nào đó cơ mà!
Ví dụ bạn gõ =Coleter(H5) thì sẽ cho kết quả là ký tự H
Đâu có Edit công thức gì đâu chứ!
Vâng! cái này em đã kiểm tra, nhưng em không có yêu cầu gì về mãng nên chưa nghiên cứu
(mà thật ra cũng không có khả năng để nghiên cứu)
Xin hỏi thêm 1 chút về UDF:
1> Câu hỏi 1:
Tôi có hàm sau:
Ý tôi muốn nếu tham số PC ta không ghi gì thì đồng nghĩa là nó = rổng! Thế nhưng cho đoạn code màu đỏ ở trên vào thì hàm không chạy (xóa nó đi lại chạy bình thường)
Cho hỏi tôi sai chổ nào?
2> Câu hỏi 2: Tôi muốn dùng hàm Join để thay đoạn:
thì phải chỉnh sửa lại code như thế nào (thử hoài không đựoc)
3> Câu hỏi 3:
code này:
Range(…).Cells.Count và Range(…).Count Khác nhau ở điểm nào?
Trừong hợp =Joinif(A1:A7,"x",B1:B7,"") thì chạy đựoc thầy à!
Ý em muốn nếu không gõ PC vào thì nó tự hiểu là ""
Vậy phải sửa lại như thế nào thầy ơi
(chử PC nghĩa là Phân cách)
Cảm ơn thầy! Em làm được rồi!
Chổ lổi ấy em cũng sửa được luôn: Vì thầy khai báo PC như 1 thành phần không thể thiếu được của hàm thì tất nhiên thầy không thể bỏ nó đi rồi. Còn em khai báo nó như 1 Opttional nên bỏ được! (Optional PC As Variant)
Em phát hiện ra 1 chổ chưa ổn nữa, đó là đoạn:
If PC = "" Then
JoinIf = Temp
Else
JoinIf = Mid(Temp, 2, Len(Temp))
End If
(Thầy gỏ hàm =Joinif(A1:A7,"x",B1:B7,"///") sẽ biết tại sao!)
Em sửa lại:
Không biết còn chổ nào chưa ổn nữa không? Thầy kiểm tra giúp em với!
Ah… thầy ơi, còn 2 câu hỏi nữa em đang thắc mắc mà chưa thấy ai trả lời giúp:
2> Câu hỏi 2:
Em muốn dùng hàm Join để thay đoạn: Temp = Temp & PC & VungKQ(i) thì phải chỉnh sửa lại code như thế nào?
3> Câu hỏi 3:
2 đoạn:
Range(…).Cells.Count
và
Range(…).Count
Khác nhau ở điểm nào?
Ah, nhân em xem bài ở chổ này:
https://www.giaiphapexcel.com/forum/showthread.php?t=11953
Bài toán về gộp dử liệu!
Ở đó đã có mấy giãi pháp:
-Dùng công thức thường
-Dùng sự kiện Worksheet_Change
Giờ em muốn dùng hàm tự tạo xem thế nào thôi ạ!
Chủ yếu là "luyện tay nghề" (cho giống anh) chứ không ứng dụng gì cả
Ai chà, hèn nào em làm hoài hỏng ra, em viết
Arr(i) = VungKQ(i)
Sao nó không thể dùng số chạy i đựoc nhỉ?
—————
Còn câu hỏi số 3 của em thì sao thầy ơi!
(em thí nghiệm mà không phát hiện chổ nào khác nhau cả)