7

我试图通过使用将单引号添加到列中的值Chr(39),但我只得到第二个引号。
例如,我想要“价值”,但我正在获得价值

但是,如果我通过使用双引号来使用Chr(34)它,我会得到“价值”

Sub AddQuote()
Dim myCell As Range
    For Each myCell In Selection
        If myCell.Value <> "" Then
            myCell.Value = Chr(39) & myCell.Value & Chr(39)
        End If
    Next myCell
End Sub
4

3 回答 3

6

只需添加另一个单引号:

Sub AddQuote()
Dim myCell As Range
    For Each myCell In Selection
        If myCell.Value <> "" Then
            myCell.Value = Chr(39) & Chr(39) & myCell.Value & Chr(39)
        End If
    Next myCell
End Sub
于 2012-07-14T20:36:38.787 回答
4

我更喜欢这种语法。无需遍历每个单元格,只需将整个选择读入一个数组,对数组进行操作,然后将数组内容转储回工作表。最多两次触摸工作表。

Sub AddQuote()

  Dim i As Long, j As Long
  Dim inputData As Variant
  Dim outputData As Variant

  ' only act on a range
  If TypeName(Selection) = "Range" Then
    ' assign selection value to a Variant array
    inputData = Selection.Value
    ' create an output array of the same size
    ReDim outputData(LBound(inputData) To UBound(inputData), _
                     LBound(inputData, 2) To UBound(inputData, 2))

    ' loop through all array dimensions
    For i = LBound(inputData) To UBound(inputData)
      For j = LBound(inputData, 2) To UBound(inputData, 2)
        ' array element will be = Empty if cell was empty
        If Not IsEmpty(inputData(i, j)) Then
          outputData(i, j) = Chr(39) & Chr(39) & inputData(i, j) & Chr(39)
        End If
      Next j
    Next i

    Selection.Value = outputData
  End If

End Sub

它还考虑了多列选择。

于 2012-07-13T19:12:33.307 回答
2

第一个引号 ' 表示单元格被视为文本。

因此,您必须在 LHS 上使用两个单引号,并在右侧使用一个单引号才能正确显示。

注意如果A1 =''test'A2 =''abc'

然后=A1&A2会给你'test''abc'如你所愿

于 2012-07-13T18:39:54.850 回答