我正在尝试在vba中创建一个公式,要求用户单击一个单元格,然后在公式中使用该单元格的地址。我的方法,有些人可能会嘲笑,是将公式分解为字符串,然后在我知道用户点击的单元格的地址后将其连接回最终的公式字符串。出于某种原因,我在activecell.value行上出现错误,尽管调试打印显示正确的公式。非常感谢任何帮助,见下文:
Dim p1, p2, p3, p4, p5, p6, p7 As String
p1 = "=IF(ISERROR(MID("
p2 = ",FIND(OP-,"
p3 = "),10)),"
p4 = ",(MID("
p5 = ",FIND(OP-,"
p6 = "),10)))"
Dim cellClick As Range
Set cellClick = Application.Selection
Set cellClick = Application.InputBox("Select Range :", xTitleId, cellClick.Address, Type:=8)
Dim vz, finVz As String
vz = cellClick.Address
finVz = p1 & vz & p2 & vz & p3 & vz & p4 & vz & p5 & vz & p6
ActiveCell.Value = finVz
答案 0 :(得分:1)
=IF(ISERROR(MID($J$11,FIND(OP-,$J$11),10)),$J$11,(MID($J$11,FIND(OP-,$J$11),10)))
是输出。
""
OP-
它也需要是ActiveCell.Formula,正如@Nathan_Sav所述。
更改为:
Dim p1 As String, p2 As String, p3 As String
Dim p4 As String, p5 As String, p6 As String, p7 As String
p1 = "=IF(ISERROR(MID("
p2 = ",FIND(""OP-"","
p3 = "),10)),"
p4 = ",(MID("
p5 = ",FIND(""OP-"","
p6 = "),10)))"
Dim cellClick As Range
Set cellClick = Application.Selection
Set cellClick = Application.InputBox("Select Range :", xTitleId, cellClick.Address, Type:=8)
Dim vz, finVz As String
vz = cellClick.Address
finVz = p1 & vz & p2 & vz & p3 & vz & p4 & vz & p5 & vz & p6
ActiveCell.Formula = finVz