我的疑问是:
我希望能够使用宏来复制&如果单选按钮打开,则计算一系列单元格的公式
但我不知道如何在公式中设置变量。下面的宏应该将公式复制到显示的范围(I12:I252,K12:K252,M12:M252)。
该公式本身包括减去C12:C252和C25的范围内的两个细胞。 B12:B252。我似乎无法引用那些细胞。我认为这就是问题......
无论如何,它不起作用。任何帮助将不胜感激。
谢谢!
Dim shp1 As Shape
Dim shp2 As Shape
Dim i As Long
On Error Resume Next
Set shp1 = Worksheets("Worksheet").Shapes("Button 1")
Set shp2 = Worksheets("Worksheet").Shapes("Button 2")
If shp1.ControlFormat.Value = xlOn Then
MsgBox "Auto Calculating"
For i = 12 To 252
Range("I" & i).Formula = "=IFERROR(((C & i)-(B & i))*I6/(E7-E6);"")"
Range("K" & i).Formula = "=IFERROR(((C & i)-(B & i))*J6/(E7-E6);"")"
Range("M" & i).Formula = "=IFERROR(((C & i)-(B & i))*K6/(E7-E6);"")"
Next i
Else
If shp2.ControlFormat.Value = xlOn Then
MsgBox "Manually insert calculation"
End If
End If
答案 0 :(得分:2)
几点改进:
;
替换为,
。 ;
是您的当地人
设置,但.Formula
使用英文设置!i
置于quoatation标记之外,即代替=IFERROR(((C & i)...
写=IFERROR(((C" & i & ")...
$
,则可以使用一个公式替换所有公式:=IFERROR(($C12-$B12)*I$6/($E$7-$E$6),"")
.FormulaR1C1
- 这样,当您将其应用于其他范围时,您的公式也会起作用。要轻松转换公式,请将其正常键入单元格并在VBA立即窗口中运行? Selection.FormulaR1C1
。上述公式转换为=IFERROR((RC3-RC2)*R6C/(R7C5-R6C5),"")
I12:K252
)。更好地将此范围指定给命名范围并将其用作参考。这样,如果稍后添加/删除行或列,您的代码也将起作用。On Error Resume Next
!这是一个监督应该修复的错误的邀请总而言之,我最终得到了:
Public Sub YourSub()
If Range("SwitchOne") Then
Range("YourRange").FormulaR1C1 = _
"=IFERROR((RC3-RC2)*R6C/(R7C5-R6C5),"""")"
Else
If Range("SwitchTwo") Then
MsgBox "Manually insert calculation"
End If
End If
End Sub