Có cách nào dùng hàm formula trong khi viết 1 function ?

  • Thread starter Thread starter bkxd98
  • Ngày gửi Ngày gửi
Liên hệ QC

bkxd98

Thành viên mới
Tham gia
2/8/06
Bài viết
15
Được thích
26
Trong khi viết 1 function, tôi có nhu cầu gán 1 công thức cho 1 cell (dùng thuộc tính formula), nhưng khi test thì nó chạy đến dòng code gán formula thì tự thoát ra ngoài luôn. Xin hỏi các bác, đó có phải là "quy định" của excel không cho gán formula cho 1 cell trong khi viết function không?
Xin cảm ơn.
 
Trong khi viết 1 function, tôi có nhu cầu gán 1 công thức cho 1 cell (dùng thuộc tính formula), nhưng khi test thì nó chạy đến dòng code gán formula thì tự thoát ra ngoài luôn. Xin hỏi các bác, đó có phải là "quy định" của excel không cho gán formula cho 1 cell trong khi viết function không?
Xin cảm ơn.


Đúng đó là RULE bạn ah,

Trong UDF (User Define Function) chỉ trả về 1 giá trị


Cu thể hơn,

* Excel không cho phép UDF viết trong VBA thông báo bất kỳ cái gì ngoài giá trị của ô nhập hàm UDF hàm đó

* KHÔNG
thể tạo một hàm với VBA trực tiếp thực hiện :

+ Gán giá trị or công thức (formula) hay thuộc tính (properties) cho Cell khác
+ Gán thuộc tính định dạng (Format) cho Ô nhập hàm đó
+ Thông báo về thông tin về môi trường của Excel, bao gồm cả Con trỏ ô,
+ Sử dụng FIND, [FONT=&quot], CurrentRegion, CurrentArray, GOTO, SELECT, PRECEDENTS v.v : mặc dù bạn có thể sử dụng Range.End.
+ Tuy nhiên bạn có thể sử dung FIND trong Excel XP / 2003 trở đi

hy vọng thông tin có ích cho bạn, bạn nên chuyển sang dùng SUB nếu cần tự động cập nhập thì kết hợp với thủ tục WorkSheet_Change

[/FONT]
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề này hôm rồi khi ra Nha Trang em có gặp anh Cường và có bàn luận sơ qua. Nếu được nhờ anh Tigertiger và các anh chị khác chỉ giáo thêm.
Vấn đề như chúng ta biết là viết một UDF thì không được thực hiện các hành động khác ví dụ như trong hàm lại gán giá trị cho 1 ô khác. Nhưng 1 hàm thì lại có thể cho hiện ra một message box như trong file add đính kèm. Vậy các hàm UDF hạn chế thực hiện các lệnh tới đâu???

----------------
Nói thêm một tí về addin đính kèm, đó là add in kiểm tra cấu trúc của MST hãy thử nhập hơn 10 chữ số sẽ có thông báo như đã đề cập ở trên.
 

File đính kèm

Upvote 0
* KHÔNG thể tạo một VBA trực tiếp thực hiện :

+ Gán giá trị or công thức (formula) hay thuộc tính (properties) cho Cell khác
+ Gán thuộc tính định dạng (Format) cho Ô nhập hàm đó
+ Thông báo về thông tin về môi trường của Excel, bao gồm cả Contror ô,
+ Sử dụng FIND, [FONT=&quot], CurrentRegion, CurrentArray, GOTO, SELECT, PRECEDENTS v.v : mặc dù bạn có thể sử dụng Range.End.
[FONT=&quot]+ Tuy nhiên bạn có thể sử dung FIND trong Excel XP / 2003 trở đi[/FONT][/FONT]
Em thắc mắc là cái này đã đủ chưa anh? ý em là nguồn tài liệu nào em có thể tham khảo thêm về danh sách các hạn chế này.
Cảm ơn anh.
 
Upvote 0
Nhân tiện xin hỏi các bác, đối với sự kiện Worksheet_Change, mình muốn gán lại formula cho activecell thì máy nó hiểu đó là sự kiện Worksheet_Change nữa tạo thành 1 vòng lặp chạy vô tận, có cách nào không cho nó không hiểu đó là Worksheet_Change nữa không ?
 
Upvote 0
Nhân tiện xin hỏi các bác, đối với sự kiện Worksheet_Change, mình muốn gán lại formula cho activecell thì máy nó hiểu đó là sự kiện Worksheet_Change nữa tạo thành 1 vòng lặp chạy vô tận, có cách nào không cho nó không hiểu đó là Worksheet_Change nữa không ?

' đúng là nếu thế sẽ thành vòng lặp vô tận

bạn nên làm như sau, tắt bắt sự kiện Application.EnableEvents khi xử lý CODE, hết hàm lại bật lại nó


PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    
    '<............. CODE xu ly o day, thuong xet them target nua.........>
    
        Application.EnableEvents = True
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom