如何在vba中的字符串中加双引号?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在vba中的字符串中加双引号?相关的知识,希望对你有一定的参考价值。

我想通过包含双引号的vba在单元格中插入if语句。

这是我的代码:

Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!B1=0,"",Sheet1!B1)"

由于双引号,我在插入字符串时遇到问题。我该如何处理双引号?

答案

我发现最简单的方法是加倍报价来处理报价。

Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0,"""",Sheet1!A1)" 

有些人喜欢使用CHR(34)*:

Worksheets("Sheet1").Range("A1").Formula = "IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)" 

*注意:CHAR()用作Excel单元格公式,例如在单元格中写入“= CHAR(34)”,但对于VBA代码,则使用CHR()函数。

另一答案

另一种解决方法是使用临时替换字符构造字符串。然后,您可以使用REPLACE将每个临时字符更改为双引号。我使用代字号作为临时替代字符。

这是我一直在研究的项目的一个例子。如果/当细胞意外踩到时,这是修复非常复杂的公式的一个小实用例程。进入一个单元格是一个困难的公式,但这个小实用程序可以立即修复它。

Sub RepairFormula()
Dim FormulaString As String

FormulaString = "=MID(CELL(~filename~,$A$1),FIND(~[~,CELL(~filename~,$A$1))+1,FIND(~]~, CELL(~filename~,$A$1))-FIND(~[~,CELL(~filename~,$A$1))-1)"
FormulaString = Replace(FormulaString, Chr(126), Chr(34)) 'this replaces every instance of the tilde with a double quote.
Range("WorkbookFileName").Formula = FormulaString

这实际上只是一个简单的编程技巧,但它使得在VBA代码中输入公式非常容易。

另一答案

双引号内的所有双引号都必须加倍。例如,我有一个json文件字符串:“delivery”:“Standard”,在Vba编辑器中我将其更改为“”“delivery”“:”“Standard”“,”并且everythig正常工作。如果你必须插入很多类似的字符串,我的建议首先将它们全部插入“”之间,然后用VBA编辑器替换“inside into”“。如果你会出错,VBA编辑器会显示这行为红色,你会纠正这个错误。

另一答案

我更喜欢tabSF的答案。在你的答案中实现同样的目的。以下是我的方法

Worksheets("Sheet1").Range("A1").Value = "=IF(Sheet1!A1=0," & CHR(34) & CHR(34) & ",Sheet1!A1)"
另一答案

我编写了一个小例程,它将公式从一个单元复制到一个剪贴板,可以轻松地在Visual Basic编辑器中粘贴。

    Public Sub CopyExcelFormulaInVBAFormat()
        Dim strFormula As String
        Dim objDataObj As Object

        'Check that single cell is selected!
       If Selection.Cells.Count > 1 Then
            MsgBox "Select single cell only!", vbCritical
            Exit Sub
        End If

        'Check if we are not on a blank cell!
       If Len(ActiveCell.Formula) = 0 Then
            MsgBox "No Formula To Copy!", vbCritical
            Exit Sub
        End If

        'Add quotes as required in VBE
       strFormula = Chr(34) & Replace(ActiveCell.Formula, Chr(34), Chr(34) & Chr(34)) & Chr(34)

        'This is ClsID of MSFORMS Data Object
       Set objDataObj = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        objDataObj.SetText strFormula, 1
        objDataObj.PutInClipboard
        MsgBox "VBA Format formula copied to Clipboard!", vbInformation

        Set objDataObj = Nothing

    End Sub

它最初发布在Chandoo.org论坛的Vault部分。

以上是关于如何在vba中的字符串中加双引号?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vba中的字符串中添加双引号?

vba 如何去掉返回结果两端的双引号?

Python中,怎么在字符串里嵌入双引号或者单引号

Excel vba替换双引号怎么写?

VBA中字符变量双引号如何去除?我的变量赋值使用时因为是字符变量自带了双引号导致赋值后无法识别

编辑器中的 ms-access VBA 长 sql 查询字符串行拆分(内联双引号)