Thắc mắc về Function trong VBA

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vohoang41291

Thành viên mới
Tham gia
25/6/16
Bài viết
6
Được thích
1
PHP:
Public Function MsgboxTimer(Prompt As String, Optional Buttons As VbMsgBoxStyle, Optional title As String, Optional TimeOut As Integer = 32000) As VbMsgBoxResult
    Dim Wshell As Object
    Set Wshell = CreateObject("WScript.Shell")
    MsgboxTimer = Wshell.Popup(Prompt, TimeOut, title, Buttons)
End Function

Em xin chào mọi người.

Em có sử dụng Function MsgboxTimer như trên để hiển thị được tiếng Việt có dấu. Em đang thắc mắc là sao cái Function trên không sử dụng được trong worksheet, hoặc lưu dưới dạng add-in cũng không sử dụng được. Em phải copy toàn bộ code trên vào Module của file cần sử dụng thì mới được. Vậy làm sao mình có thể biết được Function nào sử dụng được ở worksheet, còn Function nào thì không ạ?

Em cám ơn mọi người.
 
Vậy làm sao mình có thể biết được Function nào sử dụng được ở worksheet, còn Function nào thì không ạ?
Trong cửa sổ VBAProjects chia 2 phần rõ rệt:
1- Microsoft Excel Objects: Gồm các sheets và workbook.
Dùng để chứa các sự kiện liên quan đến object (sheets, thisworkbook).VD: worksheet_Change ...
2- Modules:
Hiểu nôm na là các trang giấy trắng, dùng để lưu các sub, function...
Không thay đổi nếu copy, delete sheet,...
Tham khảo phần trả lời từ microsoft:
 
Upvote 0
Function trên là hàm gọi một phương thức, phương thức được gọi cụ thể là một popup trong một lớp đối tượng. Công thức được viết dưới dạng UDF thông thường thì không thể gọi một phương thức trong VBA từ hành động gõ gọi hàm tại ô Trang tính.
Bạn không thể viết hàm theo cách thông thường để xóa Trang tính, xóa dòng, ..., các hành động này gọi chung là một phương thức, một thao tác, một tác động.

Vì VBA là chạy đồng bộ, nên việc gọi một phương thức bởi Hàm gõ tại ô Excel là khá phức tạp.



 
Upvote 0
Trong cửa sổ VBAProjects chia 2 phần rõ rệt:
1- Microsoft Excel Objects: Gồm các sheets và workbook.
Dùng để chứa các sự kiện liên quan đến object (sheets, thisworkbook).VD: worksheet_Change ...
2- Modules:
Hiểu nôm na là các trang giấy trắng, dùng để lưu các sub, function...
Không thay đổi nếu copy, delete sheet,...
Tham khảo phần trả lời từ microsoft:
Em cám ơn câu trả lời của anh ạ
Bài đã được tự động gộp:

Function trên là hàm gọi một phương thức, phương thức được gọi cụ thể là một popup trong một lớp đối tượng. Công thức được viết dưới dạng UDF thông thường thì không thể gọi một phương thức trong VBA từ hành động gõ gọi hàm tại ô Trang tính.
Bạn không thể viết hàm theo cách thông thường để xóa Trang tính, xóa dòng, ..., các hành động này gọi chung là một phương thức, một thao tác, một tác động.

Vì VBA là chạy đồng bộ, nên việc gọi một phương thức bởi Hàm gõ tại ô Excel là khá phức tạp.
Em cám ơn câu trả lời của anh ạ
 
Upvote 0
Trình VBA có hạn nên không hiểu lắm. Nhưng mà lưu addin xlam rồi chạy hàm nó vẫn ra mà nhỉ?
 

File đính kèm

  • 1678693908565.png
    1678693908565.png
    98.5 KB · Đọc: 14
Upvote 0
Cái này chưa tồn tại trên đời thì lỗi Name là đúng rồi. Còn sửa tên hàm thì phải lưu addin lại chứ nhẩy? lúc đó gõ MsgboxTimer sẽ lỗi Name thôi.
Còn không thì copy code trên xuống, đặt cho nó nhiều tên, thích tên nào thì gõ tên ấy.
 
Upvote 0
Sao bạn không gửi cái đã sửa lên.
--
Xem topic này hài thật :-=
Em được cái thiếu hiểu biết nhưng lại rất nhiệt tình. Cứ thấy bạn nào không giải quyết được lại thương, mỗi tội sức cùng lực kiệt.
Chắc là tác giả muốn gọi hàm từ một vị trí khác thì phải.
 
Upvote 0
Dạ em cám ơn các anh đã hỗ trợ, em đã tìm ra lỗi rồi ạ. Do em đặt tên module trùng tên hàm, lúc gọi hàm trong Worksheet thì nó báo lỗi. Em sửa thành Tên_module.Tên_hàm() thì đã xử lý được rồi ạ
 
Upvote 0
Web KT

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

Back
Top Bottom