这是我用VBA excel编写的一个子例程,由于某些特殊原因,我无法将我的字符串转换为范围,以便我可以扩展...
Sub simplifiedperformance()
Dim selectedrange As Range
Dim cell As Range
Dim value1 As Double
Dim value2 As Long
Dim text As String
Dim i, x As Integer
Dim fund1(0 To 16) As Double
Dim total(0 To 160) As Double
Worksheets("Data").Range("C3:T13").Copy
Sheets("Report").Range("B39").PasteSpecial
Worksheets("Data").Range("B3:T13").Copy
Sheets("Report").Range("A39").PasteSpecial xlPasteValues
Set selectedrange = Worksheets("Report").Range("C40:E40")
For Each cell In selectedrange
value1 = cell.value
value2 = cell.Offset(0, -1).value
value1 = value1 / value2 - 1
total(x) = value1 + 1
If i = 0 Then
fund1(i) = total(0) - 1
ElseIf i > 0 Then
fund1(i) = (total(0) * total(1) * text) - 1 '<<<<<<<< HERE
text = "total(" & 2 & ") * " & text 'ATTEMPTING TO EXPAND RANGE VARIABLES ABOVE
End If
i = i + 1
x = x + 1
Next
End Sub
我尝试添加以下代码,但无济于事......
text = "total(" & 2 & ") * " & text
错误结果是类型不匹配。
我的第一个想法是拥有一个字符串并在每个循环中添加它。但当然不匹配错误。
在我的情况下,有更好的方法来转换字符串吗?
我已添加以下内容,因为它有效!但是我的代码添加了太多行
对于道格
ElseIf i = 1 Then
fund1(i) = total(0) * total(1) - 1
ElseIf i = 2 Then
fund1(i) = total(0) * total(1) * total(2) - 1
End If
答案 0 :(得分:0)
您不能将代码作为字符串放置,然后将其用作常规代码。您的代码中实际发生的是(Double * Double * String)
,它会像预期的那样引发类型不匹配错误。
Excel VBA中有一个Evaluate()
函数,它尝试将字符串表达式计算为值或对象。您可以在Application.Evaluate Method (Excel)查看有关它的一些详细信息。这可能会做你想要的,但这绝对不是推荐的方法。
您的代码不是很清楚,并且有一些错误,但看起来不是使用字符串,您可以使用您在上一次迭代中计算的fund1(i - 1)
:
fund1(i) = (fund1(i - 1) + 1) * total(i) - 1
或For
从total
到0
进行i
循环,如下所示:
Dim j As Integer
...
fund1(i) = Total(0)
For j = 1 To i
fund1(i) = fund1(i) * total(j)
Next
fund1(i) = fund1(i) - 1