Как объединить значения ячеек и текст вместе с помощью Excel VBA?

У меня есть повторяющаяся задача, которую я хотел бы автоматизировать вместо использования функции =Concatenate все время. Вот мой код до сих пор:

Cells(2, 5).Value = Cells(2, 1).Value&" - "&Cells(2, 2).Value

к сожалению, это приводит к ошибке" Compile error: Expected: end of statement", которая подчеркивает" -". Как я могу сэндвич этот текст," -", между этими двумя значениями?

3 ответов


Cells(2, 5).Value = Cells(2, 1).Value & " - " & Cells(2, 2).Value


одно предложение, для которого нужно:

Private Sub CommandButton1_Click()
Dim i As Long
Dim j As Long

Dim x As String

i = 1
j = Range("max").Value
x = Cells(i, 2)

For i = 2 To j

x = x & " - " & Cells(i, 2)

Next i

'MsgBox (x)

Range("d1").Value = x

i = 0

End Sub

@Joshua предоставил ответ на вашу ситуацию. Другим более широким решением является то, которое я использовал раньше. См. UDF, скопированный здесь.

Option Explicit
Function ConcatenateRow(rowRange As Range, joinString As String) As String
    Dim x As Variant, temp As String

    temp = ""
    For Each x In rowRange
        temp = temp & x & joinString
    Next

    ConcatenateRow = Left(temp, Len(temp) - Len(joinString))
End Function

затем в вашем файле excel просто используйте эту формулу, выбрав диапазон ячеек для объединения и дав ему строку (в данном случае" -"), чтобы поместить между ними.