Có chức năng "Đăng ký" hoặc "Biên dịch lại" trước khi sử dụng các hàm được lập trình không?Làm cách nào để sử dụng chức năng bảng tính được tạo lập trình trong VBA
Khi tôi thêm hàm vào trang tính, tôi không thể sử dụng hàm cho đến khi sau khi điều khiển được trả về trang tính.
Ví dụ: Nếu mã của tôi thêm hàm vào trang tính, sau đó cố gắng sử dụng nó, tôi nhận được lỗi sau: Lỗi thời gian chạy 438 - Đối tượng không hỗ trợ thuộc tính hoặc phương pháp này Khi tôi xem mã các bảng tính các hàm có sẵn và nếu tôi chạy mã chỉ sử dụng các hàm đã tạo, không có lỗi.
Làm cách nào để sử dụng các chức năng ngay sau khi tạo chúng mà không dừng trước?
Dưới đây là ví dụ về mã - Tôi gặp lỗi khi chạy TestWorkSheetFunctions nhưng không phải khi tôi chạy TestWorkSheetFunction sau khi các hàm được tạo.
Ví dụ giả định một workbook mới với ít nhất hai tấm (sheet1 và Sheet2)
Option Explicit
Public Sub TestingWorksheetFunction()
AddWorkSheetFunction
TestWorkSheetFunction
End Sub
Public Sub AddWorkSheetFunction()
'Sheet1's Function
Dim strFunctionCode As String
strFunctionCode = _
"Public Function HelloWorld() as string" & vbCrLf & _
vbCrLf & _
vbTab & "HelloWorld = ""Hello World from Sheet 1""" & vbCrLf & _
vbCrLf & _
"End Function"
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet1").CodeName).CodeModule.AddFromString strFunctionCode
'Sheet2's Function
strFunctionCode = _
"Public Function HelloWorld() as string" & vbCrLf & _
vbCrLf & _
vbTab & "HelloWorld = ""Hello World from Sheet 2""" & vbCrLf & _
vbCrLf & _
"End Function"
ThisWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets("Sheet2").CodeName).CodeModule.AddFromString strFunctionCode
End Sub
Public Sub TestWorkSheetFunction()
Dim wsWorksheet1 As Object
Set wsWorksheet1 = ThisWorkbook.Sheets("Sheet1")
Dim wsWorksheet2 As Object
Set wsWorksheet2 = ThisWorkbook.Sheets("Sheet2")
MsgBox wsWorksheet1.HelloWorld()
MsgBox wsWorksheet2.HelloWorld()
End Sub
Cảm ơn Người qua đường vì đã sửa mã mẫu của tôi. – LastDavid