我正在为客户创建电子表格以管理他的ALM。我根据客户的要求在Excel和VBA下开发了它。 一张“数据”可计算所有vba函数。如果我手动计算每个单元格都可以正常工作,但是如果我运行宏则不能。 你有解决方案吗?我可以根据需要发布整个文件,以便进行更好的调查。
在一开始,所有计算都在excel单元格中进行,但是我为每个表创建了专用函数,因为保存时文件太大。
HttpsServer
我正在为客户创建电子表格以管理他的ALM。我根据客户的要求在Excel和VBA下开发了它。 一张“数据”可计算所有vba函数。如果我手动计算每个单元格都可以正常工作,但是如果我运行宏则不能。 你有解决方案吗?我可以根据需要发布整个文件,以便进行更好的调查。
在一开始,所有计算都在excel单元格中进行,但是我为每个表创建了专用函数,因为保存时文件太大。
HttpsServer
考虑到您对我以前的回答给我的建议后,代码可以更好地工作,但对于某些范围仍然无效。 我的问题来自函数中参数的错误计算。 实际上,我使用ligne = activecell.row-8来获取要计算范围的ligne。但是如果我手动激活它会起作用,因为实际的单元格已被激活,但是当我多次调用该函数时却不能,因为我无法激活每个单元格,因此对于电子表格来说太长了。
如何使用编写函数的单元格的正确地址来计算ligne?
我希望我足够清楚。对不起,我的英语。
Taux_Mois(ByVal mMois作为范围,ByVal sScenario作为范围)
Dim ligne As Long
ligne = ActiveCell.row - 8
Select Case (Range("DATA[Flag]").Cells(ligne).Value = 0) Or (Range("DATA[frequence fixing]").Cells(ligne).Value = 0)
Case True
Taux_Mois = 0
Exit Function
Case False
Dim index_taux As Integer
Dim ajust As Long
index_taux = CInt(Range("DATA[Indexation ID]").Cells(ligne).Value)
If index_taux = 1 Then
ajust = 0
Else
Dim ajust1,dernierfixingt0,freqfixing As Integer
dernierfixingt0 = Range("DATA[Dernier fixing t0]").Cells(ligne).Value
freqfixing = Range("DATA[frequence fixing]").Cells(ligne).Value
ajust1 = (Int((mMois.Value - dernierfixingt0) / freqfixing) * freqfixing)
ajust = Worksheets("Market Data").Range("Taux_" & sScenario.Value).Offset(12 + dernierfixingt0 + ajust1,1 + index_taux).Value
End If
Taux_Mois = Range("DATA[facteur taux (TVA,base)]").Cells(ligne).Value * (ajust + Range("DATA[Spread / Taux]").Cells(ligne).Value / 10000)
Exit Function
End Select
结束功能