vba函数的结果未刷新

我正在为客户创建电子表格以管理他的ALM。我根据客户的要求在Excel和VBA下开发了它。 一张“数据”可计算所有vba函数。如果我手动计算每个单元格都可以正常工作,但是如果我运行宏则不能。 你有解决方案吗?我可以根据需要发布整个文件,以便进行更好的调查。

在一开始,所有计算都在excel单元格中进行,但是我为每个表创建了专用函数,因为保存时文件太大。

HttpsServer
haoqiwei123 回答:vba函数的结果未刷新

考虑到您对我以前的回答给我的建议后,代码可以更好地工作,但对于某些范围仍然无效。 我的问题来自函数中参数的错误计算。 实际上,我使用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

结束功能

本文链接:https://www.f2er.com/3159297.html

大家都在问