excel 工作簿打开时如何停止自定义项重算?

x6yk4ghg  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(125)

我有一本工作手册来评估我的投资组合。它包括从Excel的股票数据类型不可用的某些网站中抓取数据的UDF。UDF需要时间进行计算。
我希望UDF在我按F9键时运行,而不是在我打开工作簿时运行。
是否有类似于“如果运行是加载工作簿的一部分,则执行此操作”的内容?
我有Calculation=Automatic和Application.Volatile(False)。
其中一个UDF:

Function GetLSEPrice(ticker As String) As Double

Application.Volatile (False)

Dim driver As New ChromeDriver
Dim url As String
Dim y As Selenium.WebElement

url = "https://www.londonstockexchange.com/stock/" & _
      ticker & _
      "/united-kingdom/company-page"

driver.AddArgument "--headless"
driver.Get url
Set y = driver.FindElementByClass("price-tag")
GetLSEPrice = CDbl(y.Text)

End Function
tgabmvqs

tgabmvqs1#

下面应该做到;
步骤1)-在工作簿中创建新属性-计算调用各种UDF的次数
步骤2)-在UDF中添加代码以测试该计数器
我在SheetSelectionChange事件中添加了代码(只是为了帮助触发UDF)
如下;

Public UDFCallCtr As Long

Private Sub Workbook_Open()
   ThisWorkbook.UDFCallCtr = 1  ' Not Really Reqd
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
   Application.CalculateFull
End Sub

这是我测试过的UDF

Public Function UDFTester() As String
   If ThisWorkbook.UDFCallCtr > 5 Then  ' Change 5 to any value that works for you
      ' Put you Code here
        UDFTester = "Time is now " & Now()
      ' Done
   Else
      UDFTester = "NOT READY YET"
      ThisWorkbook.UDFCallCtr = ThisWorkbook.UDFCallCtr + 1
   End If
End Function

以下内容可能有助于说明代码的去向

相关问题