我將解釋我發現的所有內容,但總之我只想想要在代碼後面設置單元格A1的值。我試過Create Excel Add-in - get cell value加上其他鏈接,所有這些技術只有在宏上運行它們時才起作用,但我想從函數中執行它們。設置單元格的值加入
所以讓我開始解釋:
我不明白爲什麼我得到一個奇怪的行爲,當我在一個函數與一個Sub運行相同的代碼。看看下面的例子:
Dim TimeToRun
Sub Macro1()
'Dim addIn As COMAddIn
'Dim automationObject As Object
'Set addIn = Application.COMAddIns("ProbeAddIn")
'Set automationObject = addIn.Object
'automationObject.ImportData
MsgBox "Hello world"
End Sub
Sub Macro2()
TimeToRun = Now + TimeValue("00:00:01")
Application.OnTime TimeToRun, "Macro1" ' run Macro1 on 1 seconds
End Sub
Function Test()
TimeToRun = Now + TimeValue("00:00:01")
Application.OnTime TimeToRun, "Macro1" ' run Macro1 on 1 seconds
End Function
注意Macro2
和功能Test
有相同的代碼。爲什麼如果我運行Macro2,它工作正常(消息框顯示)。但是,如果我去一個單元格並輸入=Test()
,那麼即使我有相同的代碼,我也會得到一個錯誤!
我之所以展示這個例子的原因是因爲我已經在Macro1上註釋過的代碼在我直接運行宏的情況下運行時效果很好。如果我將該代碼放入函數Test中不起作用。這個代碼執行下面的方法在我的外接程序項目上的Visual Studio:
唯一的例外是:
System.Runtime.InteropServices.COMException是由用戶代碼 未處理的HResult = -2146827284 Message = Exception from HRESULT:0x800A03EC
Source =「」ErrorCode = -2146827284 StackTrace: at System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFlags flags,Object target,Int32 [] aWrapperTypes, MessageData & msgData) at Microsoft.Office.Interop.Excel.Range.set_Value2(Object value) at ReadWrite.ImportData()in C:\ Users \ Antonio \ Dropbox_Temp \ visual studio \ Probe add in test \ ProbeAddIn \ ProbeAddIn \的Class1.cs:線82的InnerException:
我得到的異常,因爲我跑:
Function Test()
Dim addIn As COMAddIn
Dim automationObject As Object
Set addIn = Application.COMAddIns("ProbeAddIn")
Set automationObject = addIn.Object
automationObject.ImportData
End Function
而不是
Sub Test()
Dim addIn As COMAddIn
Dim automationObject As Object
Set addIn = Application.COMAddIns("ProbeAddIn")
Set automationObject = addIn.Object
automationObject.ImportData
End Function
如何使宏內的代碼和函數以同樣的方式運行?當用戶鍵入公式時,而不是用戶運行宏時,我想觸發該方法的執行。 即使我有功能運行宏我得到相同的異常我沒有得到一個例外的唯一方法是,如果第一件事是運行宏是...
Excel VBA Sub不返回,但函數確實。所以你的'功能測試'不...... – bonCodigo
最後一個'Function Test()'怎麼辦?那一個返回。它調用ImportData方法。該方法不能改變單元格A1的值爲什麼?如果我從宏運行相同的方法,它工作正常。謝謝您的幫助! –
你真的想要做什麼,讓一個加載項在特定時間更改單元格值?每秒之後? – bonCodigo