#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"