2

Я пытаюсь получить эту функцию в VBA, но я новичок в этом. Кажется, я не знаю, как мне это сделать:

Что я пытаюсь сделать, так это то, что для каждой ячейки в столбце B, которая является числовой, я хочу взять следующие две ячейки в столбце H, т.е. если это B7, я бы хотел взять H8 и H9 (следующие две строки в H столбец) и объединить их (они являются строками) и сохранить их в I7 (та же строка, что и в B7) и, наконец, удалить значения в H8, H9.

Вот куда я попал, я знаю, что это немного.

Private Sub CommandButton1_Click()
Dim B As Range, H As Range, I As Range
For Each B In ClientTable.Columns(2).Cells
    If IsNumeric(B) Then
    (What should be done here?)    
    End If
Next B
End Sub

1 ответ1

1

Я обнаружил, что IsNumeric(B) имеет значение true для пустых ячеек, поэтому я соответствующим образом изменил ваш оператор If  Это сработало для меня:

    If IsNumeric(B) And B <> "" Then
        Cells(B.Row, 9) = Cells(B.Row + 1, 8) & Cells(B.Row + 2, 8)
        Cells(B.Row + 1, 8) = ""
        Cells(B.Row + 2, 8) = ""
    End If
    If B.Row > 9 Then Exit For

Очевидно, 8 и 9 - номера столбцов для H и I соответственно.  Я добавил

If B.Row > 9 Then Exit For

линия, потому что у меня была проблема с завершением цикла; если

For Each B In ClientTable.Columns(2).Cells

работает для вас, вы можете взять If B.Row > 9 Then Exit For .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .