代码之家  ›  专栏  ›  技术社区  ›  Batyr Nazarov

使用VBA将带引号的公式放入单元格会引发错误

  •  3
  • Batyr Nazarov  · 技术社区  · 7 年前

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

    With ws3.Range("E4:E" & LastRow3)
        .Formula = "=A4&B4"
    End With
    
    4 回复  |  直到 7 年前
        1
  •  3
  •   Pᴇʜ    7 年前

    报价中的报价需要加倍

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

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

        2
  •  3
  •   Gary's Student    7 年前

    这似乎有效:

    Sub jhgfd()
        Set ws3 = ActiveSheet
        LastRow3 = 10
    
        With ws3.Range("E4:E" & LastRow3)
            .Formula = "=A4 & CHAR(32) & B4"
        End With
    End Sub
    
        3
  •  1
  •   Vityata    7 年前

    将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

        4
  •  0
  •   Michał Turczyn    7 年前

    您也可以这样做:

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

    这是一个简单的循环,循环第五列,行数在4到之间 LastRow3 并将此单元格的值设置为在同一行中连接A列和B列。