Как добавить несколько строковых значений в ячейку на листе Excel с помощью vba

#excel #vba

#excel #vba

Вопрос:

Мой приведенный ниже код проверяет, пусты ли ячейки столбцов S и T или нет. Если ячейки пусты, текст переходит в столбец U, указывая, что он не может быть пустым. Моя проблема в том, что ячейка может принимать по одной строке за раз, я ищу способ объединить строку в одной ячейке. Пожалуйста, помогите. Спасибо.

Мой код:

         For pos2 = 1 To .UsedRange.Rows.Count   1 Step 1

            If (IsEmpty(.Cells(pos2, "S").Value) = True) Then
                .Cells(pos2, "U").Value = "Description can't be blank"
            End If

            If (IsEmpty(.Cells(pos2, "T").Value) = True) Then
                .Cells(pos2, "U").Value = "Criteria can't be blank"
            End If
       Next pos2
  

Ответ №1:

Вы можете использовать a String для сохранения типа ошибок, которые вы хотите записать в столбец «U»:

 Dim ErrStr      As String

With Sheets("Sheet1")

    For pos2 = 1 To .UsedRange.Rows.Count   1 Step 1
        ErrStr = "" ' reset the error string for each row

        If IsEmpty(.Cells(pos2, "S").Value) Then
           ErrStr = "Description can't be blank"
        End If

        If IsEmpty(.Cells(pos2, "T").Value) Then
            ' just to make it clearer
            If ErrStr <> "" Then
                ErrStr = ErrStr amp; " ; "
            End If

            ErrStr = ErrStr amp; "Criteria can't be blank"
        End If

        .Cells(pos2, "U").Value = ErrStr
    Next pos2

End With
  

Комментарии:

1. Большое вам спасибо за вашу помощь. 🙂

Ответ №2:

Сохраняйте строку в строковой переменной, а не записывайте ее непосредственно в ячейку. Что-то вроде:

 Dim strErrors as string

    For pos2 = 1 To .UsedRange.Rows.Count   1 Step 1

        If (IsEmpty(.Cells(pos2, "S").Value) = True) Then
            strErrors = "Description can't be blank.  "
        End If

        If (IsEmpty(.Cells(pos2, "T").Value) = True) Then
            strErrors = strErrors amp; "Criteria can't be blank"
        End If 
        .cells(pos2, "U").value = strErrors
   Next pos2
  

Ответ №3:

Просто используйте amp; like

 .Cells(pos2, "U").Value = .Cells(pos2, "U").Value amp; "Criteria can't be blank"