为什么我的字符串不会转换为可用范围?

时间:2016-06-17 02:09:00

标签: string excel vba excel-vba

这是我用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

1 个答案:

答案 0 :(得分:0)

您不能将代码作为字符串放置,然后将其用作常规代码。您的代码中实际发生的是(Double * Double * String),它会像预期的那样引发类型不匹配错误。

Excel VBA中有一个Evaluate()函数,它尝试将字符串表达式计算为值或对象。您可以在Application.Evaluate Method (Excel)查看有关它的一些详细信息。这可能会做你想要的,但这绝对不是推荐的方法

您的代码不是很清楚,并且有一些错误,但看起来不是使用字符串,您可以使用您在上一次迭代中计算的fund1(i - 1)

fund1(i) = (fund1(i - 1) + 1) * total(i) - 1

Fortotal0进行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