Excel 需要宏将逗号添加到文本字符串的开头

Excel 需要宏将逗号添加到文本字符串的开头,excel,vba,Excel,Vba,我需要一个宏将逗号附加到文本字符串列的开头。我自己录制了该操作,但它仅限于C列(通常,我需要使用的文本字符串会显示在不同的列中),并且还将范围的应用限制在我录制该操作的工作表中的特定行数上(在本例中为114行) 以下是原始记录宏输出: Sub AddCommaToESIID() ' ' AddCommaToESIID Macro ' ' Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

我需要一个宏将逗号附加到文本字符串列的开头。我自己录制了该操作,但它仅限于C列(通常,我需要使用的文本字符串会显示在不同的列中),并且还将范围的应用限制在我录制该操作的工作表中的特定行数上(在本例中为114行)

以下是原始记录宏输出:

Sub AddCommaToESIID()
'
' AddCommaToESIID Macro
'

'
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("E:E").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C2").Select
    ActiveCell.FormulaR1C1 = ","
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:C114")
    Range("C2:C114").Select
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]&RC[-1]"
    Range("E2").Select
    Selection.AutoFill Destination:=Range("E2:E114")
    Range("E2:E114").Select
    Selection.Copy
    Range("D2").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Columns("E:E").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("C:C").Select
    Selection.Delete Shift:=xlToLeft
End Sub
我想对此进行修改,以实现以下目标:

  • 使宏应用于我选择的任何列,而不是C列

  • 选择列后,将宏应用于我正在处理的特定工作表中的行数


  • 提前感谢您的帮助

    这将更改您选择的任何范围内的所有非公式

    Sub AddCommaToESIID()
    
        Dim rCell As Range
    
        If TypeName(Selection) = "Range" Then
            For Each rCell In Selection.Cells
                If Not rCell.HasFormula Then
                    rCell.Value = "," & rCell.Value
                End If
            Next rCell
        End If
    
    End Sub
    

    如果您有Office 365,请使用工作表公式TextJoin()。如果不搜索它,您将发现许多vba UDF模仿了这种用法。