我想知道是否可以通过VBA函数将值写入Excel中的单元格?
以下函数中的Aka都不会调用:
Function OffsetValue(myinput As Double) As Double
ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = myinput
Call OffsetValueSub(myinput)
End Function
Sub OffsetValueSub(myinput As Double)
ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = myinput
End Sub
但是以下 Dummy Sub将正常工作:
Sub Dummy()
Call OffsetValueSub(100)
End Sub
Sub OffsetValueSub(myinput As Double)
ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = myinput
End Sub
是否有必要做的事情是能够写入不是调用特定功能的单元格的单元格?
答案 0 :(得分:0)
可能这种解决方法可以为您做到:
将您的OffsetValue
功能缩短为:
Function OffsetValue(myinput As Double) As Double
OffsetValue = myinput '<--| this will trigger worksheet 'Change' event
End Function
将以下子文件放在要使用Function OffsetValue()
的工作表的代码窗格中:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ExitSub
Application.EnableEvents = False
Call OffsetValueSub(Target.Value) '<--| call 'OffsetValueSub()' and write input value where it has to
Target.ClearContents '<--| should you ever want to erase any trace of the OffsetValue function
ExitSub:
Application.EnableEvents = True
End Sub
如果您不想从您编写的单元格中删除对OffsetValue()
的调用,则只需删除/评论Target.ClearContents
这只是您可能想要增强的基本代码:
检查传入Target
Worksheet_Change()
范围
你可能想检查它是否与特定的值匹配(例如:在某个值范围内检查Target.Value
)或范围(例如:检查{{1范围本身属于预定义的Target
)标准
在整个工作簿中处理相同的需求
然后你必须在ThisWorkbook代码窗格中切换到Range
事件处理程序