VBA - 组合字符串以创建公式

时间:2017-06-01 14:14:44

标签: excel vba excel-vba

我正在尝试在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

1 个答案:

答案 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