Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用VBA将单词自动添加到多列文本的末尾?_Excel_Vba - Fatal编程技术网

Excel 如何使用VBA将单词自动添加到多列文本的末尾?

Excel 如何使用VBA将单词自动添加到多列文本的末尾?,excel,vba,Excel,Vba,我需要在两列中每个条目的末尾添加一个.mp3。我有下面的代码,但我必须选择列中的每个项目,并将其应用于这些单元格 但是我希望有一个代码可以自动将.mp3添加到B列和D列中任何条目的末尾 这是我目前的代码: Sub AppendToExistingOnRight() Dim c as range For each c in Selection If c.value <> "" Then c.value = c.value & ".mp3” Ne

我需要在两列中每个条目的末尾添加一个.mp3。我有下面的代码,但我必须选择列中的每个项目,并将其应用于这些单元格

但是我希望有一个代码可以自动将.mp3添加到B列和D列中任何条目的末尾

这是我目前的代码:

Sub AppendToExistingOnRight()
Dim c as range
For each c in Selection
  If c.value <> "" Then c.value = c.value & ".mp3”
Next
End Sub
Sub-AppendToExistingOnRight()
调光范围
对于选择中的每个c
如果c.value为“”,则c.value=c.value&“.mp3”
下一个
端接头

如果您能提供帮助,我们将不胜感激。

我已经添加了对工作簿、工作表和设置范围的引用,这些引用随后被循环。我还添加了一个检查,以验证单元格末尾是否已经存在“.mp3”。最后,我阻止了屏幕更新,直到脚本完成

如果您希望它运行得更快,请指定范围(即
ws.range(“B1:B1000”)
将检查1000个单元格,而不是1048576)

Sub-AppendToExistingOnRight()
Application.ScreenUpdating=False
将wb设置为工作簿:设置wb=ThisWorkbook
将ws设置为工作表:设置ws=wb.ActiveSheet
调光范围
变暗colB作为范围:设置colB=ws.Range(“B:B”)
变暗冷作为范围:设置冷=ws.范围(“D:D”)
对于colB中的每个c
如果c.Value“”和Right(c.Value,4)“.mp3”,则c.Value=c.Value&.mp3
下一个
对于冷态下的每个c
如果c.Value为“”,则c.Value=c.Value&“.mp3”
下一个
Application.ScreenUpdating=True
端接头

尝试下面的子部分。如果
列B
列D
中的数据相同,则可以使用一个循环

Sub AddMP3()
Dim bRng As Range, dRng As Range, mRng As Range

Set bRng = Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row)
Set dRng = Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row)

    For Each mRng In bRng
        mRng = mRng & ".mp3"
    Next

    For Each mRng In dRng
        mRng = mRng & ".mp3"
    Next

Set bRng = Nothing
Set dRng = Nothing
End Sub

没有循环的解决方案。我正在为列
B
显示它。请随意为列
D
调整它

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim sAddr As String
    Dim lRow As Long
    
    '~~> Change sheet name as applicable
    Set ws = Sheet1
    
    With ws
        '~~> Find last row in Col B
        lRow = .Range("B" & .Rows.Count).End(xlUp).Row
        
        '~~> Construct your range
        Set rng = Range("B1:B" & lRow)
        
        sAddr = rng.Address
        
        '~~> Append ".mp3" to the entire range in 1 go
        rng = Evaluate("index(concatenate(" & sAddr & ","".mp3""),)")
    End With
End Sub
在行动中

如果您想了解这是如何工作的,那么您可能想看看

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim sAddr As String
    Dim lRow As Long
    
    '~~> Change sheet name as applicable
    Set ws = Sheet1
    
    With ws
        '~~> Find last row in Col B
        lRow = .Range("B" & .Rows.Count).End(xlUp).Row
        
        '~~> Construct your range
        Set rng = Range("B1:B" & lRow)
        
        sAddr = rng.Address
        
        '~~> Append ".mp3" to the entire range in 1 go
        rng = Evaluate("index(concatenate(" & sAddr & ","".mp3""),)")
    End With
End Sub