【发布时间】:2018-01-27 05:31:37
【问题描述】:
编辑:当前代码返回编译错误“argument not optional .
我正在尝试从电子表格中的模块调用函数。任何时候用户进行更改 -> Private Sub Worksheet_Change(ByVal Target As Range) 该用户更改子下的代码如下所示:
添加策略代码
If CurCol(PolicyCode) Then
'Policy Code
Set PolicyCode = Call PolicyCodeFromOtherModuleHere
我试图用来计算单元格值的函数来自另一个模块,如下所示:
Function PolicyCode(gm As Double, Optional previous As String)
If gm > 1 Then
gm = gm * 0.01
End If
gm = Round(gm, 3)
If previous = "E" Or previous = "O" Then
PolicyCode = previous
ElseIf previous Like "1?" Then
If gm < 0.03 Then
PolicyCode = "1B"
ElseIf gm < 0.05 Then
PolicyCode = "1C"
ElseIf gm < 0.08 Then
PolicyCode = "1D"
ElseIf gm < 0.12 Then
PolicyCode = "1E"
ElseIf gm < 0.16 Then
PolicyCode = "1F"
ElseIf gm < 0.24 Then
PolicyCode = "1G"
ElseIf gm < 0.29 Then
PolicyCode = "1H"
ElseIf gm < 0.47 Then
PolicyCode = "1J"
Else: PolicyCode = "1K"
End If
ElseIf previous = "8" Or previous = "P" Or previous = "V" Or previous = "4" Or previous = "R" Then
If gm < 0.35 Then
PolicyCode = "8"
ElseIf gm < 0.45 Then
PolicyCode = "P"
ElseIf gm < 0.58 Then
PolicyCode = "V"
ElseIf gm < 0.7 Then
PolicyCode = "4"
Else: PolicyCode = "R"
End If
Else
If gm < 0.16 Then
PolicyCode = "Y"
ElseIf gm < 0.24 Then
PolicyCode = "Z"
ElseIf gm < 0.29 Then
PolicyCode = "X"
ElseIf gm < 0.36 Then
PolicyCode = "9"
ElseIf gm < 0.41 Then
PolicyCode = "J"
ElseIf gm < 0.47 Then
PolicyCode = "N"
ElseIf gm < 0.55 Then
PolicyCode = "D"
ElseIf gm < 0.63 Then
PolicyCode = "S"
ElseIf gm < 0.75 Then
PolicyCode = "T"
Else: PolicyCode = "U"
End If
End If
End Function
目标是让该函数根据 gm(毛利率)列中的任何百分比计算应将哪些策略代码放入策略代码列。有谁知道如何做到这一点?
【问题讨论】:
-
代码不做吗?我看到你正在分配一个策略代码......?你只是说,
Range("A1").Value = PolicyCode,不是吗?或者Cells(1, Target.Column).Value = PolicyCode? -
我不断收到编译错误:“Argument not optional”,它在 CurCol 之前突出显示(PolicyCode)
-
取决于您想要策略代码的位置,但这是非常可行的。您可以通过选择更改将目标传递给您的函数(我看到您没有),因此您可以更改目标单元格(修改后的单元格)或与目标偏移的单元格(比如右边或任何地方的下一个真的在纸上)。
-
如果您的问题是关于错误的,那么它应该描述该错误是什么,说明导致它的行/指令,并包含minimal reproducible example。但是您的问题似乎与特定错误无关。我不知道你的问题在问什么。如果您只是想帮助完成您的代码,请参阅why is “Can someone help me?” not an actual question?。
-
抱歉,已编辑以反映错误。 - 我应该如何编码@Wookies-Will-Code