Я написал код в Excel VBA для конкатенации значений до 7 столбцов в строке с^между ними. Я заметил, что если я введу одно значение в первые шесть столбцов, я получаю вывод без ^. Этого не происходит, если я заполнить ДО колонке 7 или 5. Код, как показано ниже:Код конкатенации не работает по назначению
Private Sub CommandButton21_Click()
Cells(2, 1).Select
Dim stri As String, eaid_1 As String, eaid_2 As String, eaid_3 As String, _
eaid_4 As String, eaid_5 As String, eaid_6 As String, eaid_7 As String
Do Until Selection.Value = ""
eaid_1 = Selection.Value
eaid_2 = Selection.Offset(0, 1).Value
eaid_3 = Selection.Offset(0, 2).Value
eaid_4 = Selection.Offset(0, 3).Value
eaid_5 = Selection.Offset(0, 4).Value
eaid_6 = Selection.Offset(0, 5).Value
eaid_7 = Selection.Offset(0, 6).Value
stri = eaid_1 & "^" & eaid_2 & "^" & eaid_3 & "^" & eaid_4 & "^" & eaid_5 _
& "^" & eaid_6 & "^" & eaid_7
Selection.Offset(0, 8).Value = stri
Selection.Offset(1, 0).Select
Loop
Cells(2, 9).Select
Dim x As String, y As String, z As String
Do Until Selection.Value = ""
x = Selection.Value
y = Right(x, 6)
z = Replace(y, "^", "")
x = Replace(x, y, z)
Selection.Offset(0, 0).Value = x
Selection.Offset(1, 0).Select
Loop
End Sub
Это эффект, который вы получаете с кодом во втором цикле. Если вы удалите этот цикл, этого не произойдет. Поэтому возникает вопрос: каково ваше намерение в этом втором цикле. FYI: он удаляет '^' из последних 6 символов. Это может дать весьма неожиданные результаты, поскольку значения между двумя '' 'могут иметь разную длину. Поэтому иногда один '^' будет удален, иногда 2, ... и т. Д. – trincot
также старайтесь избегать использования «Ячейки (2, 1). Выберите«, а затем использовать «eaid_2 = Selection.Offset (0, 1) .Value', вместо этого используйте 'eaid_2 = ячейки (2, 1) .Offset (0, 1) .Value'. или быть более динамичным. 'Dim Rng as Range',' Set Rng = Range ("B1") ', а затем' eaid_2 = Rng.Offset (0, 1) .Value', это позволит вам позже обновить выбранный диапазон намного быстрее и проще –
Вы могли бы также. просто поместите весь код в Array, 'Dim eaid() как Variant', и ваш кодовый код выглядит намного опрятно и проще отлаживать. –