vba - 调用使用函数的子例程的按钮出现问题
问题描述
我目前正在使用 VBA 进行编码并遇到了问题。
我创建了一个调用多个子例程的按钮。它运行完美,直到它到达一个使用函数的子程序。当我在开发人员选项卡中运行子程序时,它运行良好;但是,当我使用按钮调用子例程时,出现此错误:
“编译错误:找不到方法或数据成员。”
你知道如何解决这个问题吗?
下面是正在使用的子程序和函数:
Sub DiscountRate()
'Set Dimensions
Dim ws As Worksheet
Dim i As Integer
Dim Counter As Integer
Dim Value As Integer
Dim tempcount As Double
'Set parameters
Set SummarySheet = Sheets("Summary & Inputs")
Set ExpectedCompSheet = Sheets("Expected Compensation")
Set WorkYears = SummarySheet.Range("C40")
Set DiscountSheet = Sheets("Treasury Rates")
Set DiscountRateRange = DiscountSheet.Range("B7:L7")
'Clear column
ExpectedCompSheet.Range("H13:I113").Clear
'Clear color
ExpectedCompSheet.Range("H13:I113").Interior.Color = xlNone
'If prejudgment interest is filled, count and fill discount rate cells
i = 1
For Counter = 1 To WorkYears
If IsEmpty(ExpectedCompSheet.Cells(12 + Counter, 7)) = False Then
ExpectedCompSheet.Cells(12 + Counter, 8).Interior.ColorIndex = 16
ExpectedCompSheet.Cells(12 + Counter, 9).Interior.ColorIndex = 16
i = i + 1
End If
Next Counter
'Create increasing range to sum fractions of years
IncreasingRange = ExpectedCompSheet.Range(ExpectedCompSheet.Cells(12 + i, 5), _
ExpectedCompSheet.Cells(11 + i + Counter, 5))
'Find discount rate associated with increasing years
For Counter = 1 To (WorkYears + 2 - i)
IncreasingRange = ExpectedCompSheet.Range(ExpectedCompSheet.Cells(12 + i, 5), _
ExpectedCompSheet.Cells(11 + i + Counter, 5))
tempcount = Application.WorksheetFunction.Sum(IncreasingRange)
ExpectedCompSheet.Cells(11 + i + Counter, 8) = getclosest(DiscountRateRange, tempcount)
Next Counter
For Counter = 1 To (WorkYears + 2 - i)
If ExpectedCompSheet.Cells(11 + i + Counter, 8) = 0.08 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "1 Month"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("B9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 0.25 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "3 Month"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("C9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 0.5 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "6 Month"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("D9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 1 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "1 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("E9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 2 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "2 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("F9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 3 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "3 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("G9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 5 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "5 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("H9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 7 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "7 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("I9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 10 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "10 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("J9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 20 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "20 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("K9") / 100
ElseIf ExpectedCompSheet.Cells(11 + i + Counter, 8) = 30 Then
ExpectedCompSheet.Cells(11 + i + Counter, 8) = "30 Year"
ExpectedCompSheet.Cells(11 + i + Counter, 9) = DiscountSheet.Range("L9") / 100
End If
Next Counter
End Sub
Function getclosest(ByVal rng As Range, tgt As Double) As Double
t = WorksheetFunction.Max(rng)
For Each r In rng
u = Abs(r - tgt)
If u < t Then
t = u
getclosest = r
End If
Next
End Function
我正在使用带有代码的按钮:
Sub CalculateExpectedComp()
Call Module1.ExpectedCompYear
Call Module1.ExpectedCompPeriod
Call Module1.ExpectedCompAge
Call Module1.ExpectedCompPaymentAnnual
Call Module1.ExpectedCompYearFrac
Call Module1.ExpectedCompPartialYearComp
Call Module1.PrejudgmentInterest
Call Module1.DiscountRate
Call Module1.PresentValueFactor
Call Module1.PV
Call Module1.CumulativeValue
Call Module1.Formatting
End Sub
运行“调用 Module1.DiscountRate”时会出现此问题。
解决方案
推荐阅读
- jenkins - 詹金斯管道更新GitlabCommitStatus 不起作用
- python - Python,将请求离线安装为.whl不起作用
- javascript - Vue async / await 与 $emit
- .net-core - 从具有相同域的其他应用程序调用时,Dotnet 核心 COR 问题
- go - 编写 Telegraf 输入插件 - 贡献指南是最新的吗?
- javascript - 如何删除具有不同事件参数的事件侦听器?
- dart - 如何安全地解开飞镖中的可选变量?
- python - 猜报价游戏
- reactjs - 输入反应包装器
- jmeter - Jmeter从动态附加文件中读取输入参数