2015-08-04 15 views
5

Tôi đã tìm kiếm xung quanh và tôi biết cách gọi một hàm từ Personal.xlsb từ macro VB, nhưng làm cách nào tôi có thể gọi hàm được sử dụng trong một sổ làm việc mới?Sử dụng chức năng Personal.xlsb trong sổ làm việc mới?

Dưới đây là chức năng của tôi, lưu trong 'Module1' trong Personal.xlsb tôi:

Public Function GetColumnLetter(colNum As Integer) As String 
    Dim d As Integer 
    Dim m As Integer 
    Dim name As String 
    d = colNum 
    name = "" 
    Do While (d > 0) 
     m = (d - 1) Mod 26 
     name = Chr(65 + m) + name 
     d = Int((d - m)/26) 
    Loop 
    GetColumnLetter= name 
End Function 

Tôi đã tạo ra một bảng tính mới và nghĩ rằng tôi có thể gọi đó là chỉ bằng cách =getcolumnletter(1), nhưng chức năng không "cư" khi Tôi bắt đầu nhập =...

Tôi có thấy cái gì đó không ?? Làm cách nào để sử dụng chức năng này trong các sổ làm việc khác, không có VBA?

Cảm ơn lời khuyên nào!

Trả lời

9

Ah, nó đơn giản hơn tôi nghĩ. Chỉ cần sử dụng tên bảng tính trước macro - =Personal.xlsb![macroname]. Vì vậy, trong trường hợp của tôi, tôi chỉ cần đặt nó vào ô: =Personal.xlsb!GetColumnLetter(2) để trả về "B".

+0

Yeah, đó là một điều đáng tiếc về excel, bạn sẽ không nhận được dân cư trừ khi bạn đang ở trong cuốn sách của chức năng hoặc bạn tạo một add-in – Raystafarian

+0

Đó là lạ, bởi vì trong tâm trí của tôi, Personal.xlsb sẽ là nơi bạn sẽ tạo/lưu trữ macro mà bạn sẽ sử dụng "Excel rộng". Có phải đó không phải là mục đích của Microsoft cho Personal.xlsb? (Và đặc biệt là trong Personal.xlsb nếu bạn có một 'chức năng công cộng', tôi sẽ tự nhiên nghĩ rằng nó có sẵn trên tất cả các sổ làm việc mà không cần phải đặc biệt gọi nó với' = Personal.xlsb! [Bất cứ] ' – BruceWayne

+0

Đó là một nơi tốt để lưu trữ – Raystafarian

7

Như bạn đã phát hiện, bạn có thể thêm tiền tố hàm với tên tệp Personal.xlsb!. Nhưng cũng lưu ý rằng có hai tùy chọn có sẵn nếu bạn muốn tránh tiền tố chức năng của bạn:

Lựa chọn 1
Tạo một tài liệu tham khảo trong mỗi bảng tính mà sẽ gọi hàm. Mở sổ làm việc nơi bạn muốn sử dụng hàm và chuyển đến Trình chỉnh sửa VBA. Trên menu, nhấp vào Tools --> References.... Trong hộp thoại xuất hiện, đánh dấu vào ô của dự án VBA của Personal.xlsb. Lưu ý rằng nó sẽ được liệt kê với tên dự án của nó ("VBAproject" trừ khi bạn đã thay đổi tên mặc định) thay vì tên tệp; nếu các sổ làm việc khác được mở, có thể có nhiều mục nhập có tên mặc định là "VBAproject", vì vậy bạn có thể đổi tên nó trước. Thông tin chi tiết có thể được tìm thấy trong bài viết này, được công bố sau khi OP: http://www.myonlinetraininghub.com/creating-a-reference-to-personal-xlsb-for-user-defined-functions-udfs

Lựa chọn 2
Nếu bạn muốn có một thực sự có mục đích chung UDF, luôn luôn có sẵn mà không cần một trong hai tiền tố hoặc tài liệu tham khảo, bạn có thể cài đặt nó như là một bổ trợ. Này được thực hiện bằng cách lưu file với UDF như một tập tin .xlam (điều này rõ ràng sẽ là một tập tin riêng biệt hơn personal.xlsb.) Các chi tiết bổ sung trong một bài viết riêng biệt từ cùng một nguồn: http://www.myonlinetraininghub.com/create-an-excel-add-in-for-user-defined-functions-udfs

+0

Điều này thật tuyệt! Tôi đã luôn luôn biết về tùy chọn thứ hai, nhưng không nhận ra tôi có thể tạo ra một tham chiếu đến dự án cá nhân của tôi quá.Cảm ơn rất nhiều cho câu trả lời của bạn! – BruceWayne

+0

Nội dung tuyệt vời ở đây. Option1 rất tiện lợi như @BruceWayne đã nêu. Tôi đã luôn luôn sao chép và dán các chức năng cá nhân của mình vào dự án hiện tại khi cần thiết. –

Các vấn đề liên quan