我有一組在我的工作簿中定義的宏,我想提供用戶登錄日誌文件中有關這些宏事件的選項。VBA:子寫入日誌文件
Public writeLog as Boolean
Public logWrite as Object
Public log as Object
Private Sub Worksheet_Open()
Dim prompt as Integer
prompt = MsgBox("Would you like to log events for this session?", vbYesNo, "Log Events?")
If prompt Then
writeLog = True
Set logWrite = CreateObject("Scripting.FileSystemObject")
Set log = logWrite.CreateTextFile("C:/TEST.txt", False)
Else
writeLog = False
End If
End Sub
然後我創建了一個程序,我可以使用到的參數寫入此對象,我已經存儲在其自己的模塊中:
我通過創建的ThisWorkbook以下啓動日誌
Public Sub PrintLog(obj as Object, argument as String)
If writeLog = True Then
obj.WriteLine argument
End If
End Sub
不幸的是,這是行不通的,我不知道爲什麼:即使我不包括obj
作爲參數傳遞給函數(因爲log
和logWrite
爲全局變量創建),我米不能Call WriteLog("String here.")
或Call WriteLog(log, "String here.")
沒有錯誤(Compile Error: Argument Not Optional.
)
是否有可能得到這樣一個Sub()
工作,這樣我可以在工作簿中的任意位置調用它(一個按鈕,在用戶窗體壓制後,例如),而無需在每個模塊中定義新的Scripting.FileSystemObject
?
你可以寫程序來啓動日誌相同的模塊作爲'WriteLog'子英寸然後在'Worksheet_Open'事件中調用它 –
我應該每次在程序中啓動連接('Set logWrite','Set log'),在那種情況下? – Corcovado