在VBA中ReDim的Python翻译是什么?

2024-10-03 00:23:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个VBA脚本,我想翻译成Python。我有一些基本的VBA知识(1,5年前写了两个小Excel宏)。但是Python脚本仍然不能提供正确的结果,我认为这是由两条“ReDim行”造成的。这些线如下所示:

ReDim TmpDividendTimes(1 To NoOfDividends) As Variant
ReDim TmpCashDividends(1 To NoOfDividends) As Variant

我的问题是,这两条线的作用是什么?如何将它们翻译成Python呢?整个相关VBA代码如下所示:

Function BinomialDD(Variable_X As String(), Variable_Y As String(),_
                    Optional CashDividends As Variant, Optional DividendTimes As Variant)

Dim TmpDividendTimes() As Variant
Dim TmpCashDividends() as Variant
Dim NoOfDividends As Integer

If IsMissing(DividendTimes) Or IsEmpty(DividendTimes Then
    NoOfDividends=0
Else
    NoOfDividends=Application.Count(DividentTimes)
End If

If NoOfDividends=0 Then
    //Non-Relevant
   Exit Function
End If

ReDim TmpDividendTimes(1 To NoOfDividends) As Variant
ReDim TmpCashDividends(1 To NoOfDividends) As Variant

我已经在Python中尝试(猜测)了以下解决方案:

TmpDividendTimes=CashDividends
TmpCashDividends=DividendTimes
TmpDividendTimes=np.arange(0,NoOfDividends+1,1)
TmpCashDividends=np.arange(0,NoOfDividends+1,1)

因为我从网上的例子中了解到你创造了一个新的变量。你知道吗


Tags: to脚本stringifasfunctionvbavariable
1条回答
网友
1楼 · 发布于 2024-10-03 00:23:51

My question is, what is the function of these two lines?

这些语句声明dynamic arrays

Dim TmpDividendTimes() As Variant
Dim TmpCashDividends() as Variant

这些语句更改这些数组的大小-它们"...reallocate storage space ..."

ReDim TmpDividendTimes(1 To NoOfDividends) As Variant
ReDim TmpCashDividends(1 To NoOfDividends) As Variant

ReDim销毁以前的任何内容。你知道吗


And how can those be translated to Python?

Python的listarray可以被认为类似于VB的数组,但是它们都不需要ReDim语句来更改它们的大小-它们的大小是不固定的。根据您需要容器做什么,还可以使用其他Python容器。你知道吗

相关问题 更多 >