使用VBA将带引号的公式插入单元格会抛出错误

3

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

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

3

引用内的引用需要加倍

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

这将导致=A4 & " " & B4成为一个公式。


3
这似乎有效:

Sub jhgfd()
    Set ws3 = ActiveSheet
    LastRow3 = 10

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

1

在VBA中,将Excel公式进行翻译可能是最常见的任务。以下是一种算法:

  • 编写可以在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


0
你也可以选择这样做:
For i = 4 to LastRow3
    Cells(i, 5).Value = Cells(i, 1).Value & " " & Cells(i, 2).Value
Next

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


谢谢你,Michal! - Batyr Nazarov
@BatyrNazarov 如果答案对您有帮助,您应该接受它(可选择点赞)。 - Michał Turczyn
@BatyrNazarov 请参考此链接:采纳答案是如何工作的? - Michał Turczyn
谢谢。所以这是一个需要点击的勾选框,然后它就会变成绿色)) 谢谢。 - Batyr Nazarov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接