我是VBA的新手,我需要有人帮助我进行for循环,因为我的程序变得过于重复。我写了一个代码,可以计算两只股票的方差。该代码似乎工作正常。我只需要在代码的最后一部分中使用for loop即可计算和执行公式。 M15到M25的范围包含从0到100的百分比,N15到N25的范围包含从100到0的百分比,有时此代码在非英语计算机上不起作用。
这是下面的代码。任何帮助将不胜感激。在此先感谢
Dim var1 As String
Dim var2 As String
Dim covarval As String
Dim covar1 As Range
Dim covar2 As Range
If ComboBox1 = "Royal Dutch Shell" Then var1 = Range("B35")
If ComboBox1 = "Exxon Mobil Corp" Then var1 = Range("C35")
If ComboBox2 = "Biogen Inc" Then var2 = Range("F35")
If ComboBox2 = "Johnson & Johnson" Then var2 = Range("G35")
If ComboBox1 = "Royal Dutch Shell" Then
Set covar1 = Range("rds")
ElseIf ComboBox1 = "Exxon Mobil Corp" Then
Set covar1 = Range("exon")
End If
If ComboBox2 = "Biogen Inc" Then
Set covar2 = Range("bign")
ElseIf ComboBox2 = "Johnson & Johnson" Then
Set covar2 = Range("jhnsn")
End If
Range("B39").Formula = "=COVAR(" & covar1.Address & "," & covar2.Address & ")"
covarval = Range("B39").Value
Sheets("EfficientFrontier").Select
"I need **for loop** for this part"
Range("p15").Formula = "=M15^2*" & var1 & "+N15^2*" & var2 & "+2*M15*N15* " & covarval & ""
Range("p16").Formula = "=M16^2*" & var1 & "+N16^2*" & var2 & "+2*M16*N16* " & covarval & ""
Range("p17").Formula = "=M17^2*" & var1 & "+N17^2*" & var2 & "+2*M17*N17* " & covarval & ""
Range("p18").Formula = "=M18^2*" & var1 & "+N18^2*" & var2 & "+2*M18*N18* " & covarval & ""
Range("p19").Formula = "=M19^2*" & var1 & "+N19^2*" & var2 & "+2*M19*N19* " & covarval & ""
Range("p20").Formula = "=M20^2*" & var1 & "+N20^2*" & var2 & "+2*M20*N20* " & covarval & ""
Range("p21").Formula = "=M21^2*" & var1 & "+N21^2*" & var2 & "+2*M21*N21* " & covarval & ""
Range("p22").Formula = "=M22^2*" & var1 & "+N22^2*" & var2 & "+2*M22*N22* " & covarval & ""
Range("p23").Formula = "=M23^2*" & var1 & "+N23^2*" & var2 & "+2*M23*N23* " & covarval & ""
Range("p24").Formula = "=M24^2*" & var1 & "+N24^2*" & var2 & "+2*M24*N24* " & covarval & ""
Range("p25").Formula = "=M25^2*" & var1 & "+N25^2*" & var2 & "+2*M25*N25* " & covarval & ""
查看代码的最后一部分,每行的可变部分是一个从15到25的数字。因此,这样的For循环可以减少代码行:
For i = 15 To 25
Range("P" & i).Formula = "=M" & i & "^2*" & var1 & "+N" & i & "^2*" & var2 & "+2*M" & i & "*N" & i & "* " & covarval & ""
Next
如您所见,数字已被i
代替,从15到25。