使用VBA引用进入单元格的公式会引发错误

时间:2018-03-23 11:00:56

标签: excel vba excel-vba excel-formula

我有一个代码,它连接A和B列中的值。当我想在A和B之间添加一个空格,这是一个Excel公式    =CONCATENATE(A4," ",B4)=A4 & " " & B4 使用VBA时,宏会将其标记为错误:

With ws3.Range("E4:E" & LastRow3)
    .Formula = "=A4&B4"
End With

4 个答案:

答案 0 :(得分:3)

引号内的引号需要加倍

.Formula = "=A4 & "" "" & B4"

这将导致=A4 & " " & B4作为公式。

答案 1 :(得分:3)

这似乎有效:

Sub jhgfd()
    Set ws3 = ActiveSheet
    LastRow3 = 10

    With ws3.Range("E4:E" & LastRow3)
        .Formula = "=A4 & CHAR(32) & B4"
    End With
End Sub

答案 2 :(得分:1)

将公式从Excel“翻译”到VBA可能是一个人在VBA中必须做的最受欢迎的任务。这是一个算法:

  • 编写公式,因此可以在Excel中使用;
  • 手动选择;
  • 运行此:
Public Sub PrintMeUsefulFormula()

    Dim strFormula  As String
    Dim strParenth  As String

    strParenth = """"

    strFormula = Selection.Formula
    strFormula = Replace(strFormula, """", """""")

    strFormula = strParenth & strFormula & strParenth
    Debug.Print strFormula

End Sub
  • 它会在即时窗口中显示公式;
  • 复制;

如果您使用=CONCATENATE(A4," ",B4)执行这些步骤,则会打印"=CONCATENATE(A4,"" "",B4)"

如果您使用的是本地Excel公式,例如一个俄语Excel,其中=CONCATENATE()=СЦЕПИТЬ(),为了打印本地公式,您应该写Selection.FormulaLocal而不是Selection.Formula

答案 3 :(得分:0)

你可以这样做:

For i = 4 to LastRow3
    Cells(i, 5).Value = Cells(i, 1).Value & " " & Cells(i, 2).Value
Next

这是一个简单的循环,循环遍历第五(E)列,4和LastRow3之间的行,并将此单元格的值设置为相同行中的连接A和B列。