Пропуск пустой ячейки в таблице

Автор Посетитель 16.08.2024, 16 августа 2024, 08:22

Посетитель 16.08.2024

Есть таблица в worde, состоящая из 6 столбцов.
Все ячейки 4 столбца умножаются на все ячейки 5 столбца (последовательно) и результат записывается в 6 столбец.
Если в ячейке 4 столбца (любой хоть 1 хоть 4) пусто - то нужно просто пропускать умножение и переходить к другой и так далее.

Как пофиксить данный кусок кода?

Спойлер
For ROW2 = 2 To targetRow - 1
   
    cellV1 = ActiveDocument.Tables(2).cell(ROW2, 5).Range.Text  'все значения пятого стобца
    cellV1 = Replace(cellV1, Chr(7), "")

   
    If cellV1 <> "" Then
        numberV1 = CDbl(cellV1)
    Else: GoTo SkipRow
    End If

   
    cellV2 = ActiveDocument.Tables(2).cell(ROW2, 4).Range.Text 'все значения 4 стобца
    cellV2 = Replace(cellV2, Chr(7), "")

   
    If cellV2 <> "" Then
   
        numberV2 = CInt(cellV2)
        V = numberV1 * numberV2
        formattedV1 = format(V, "###,##0.00")
        ActiveDocument.Tables(2).cell(ROW2, 6).Range.Text = formattedV1
   
    Else: GoTo SkipRow
   
    End If

SkipRow:
Next ROW2
[свернуть]

Администратор

Цитата:
Если в ячейке 4 столбца (любой хоть 1 хоть 4) пусто

Достаточно посмотреть одну ячейку или надо все четыре ячейки посмотреть?

Посетитель 16.08.2024

нужно просмотреть произвольное количество ячеек - то есть их может быть сколько угодно

Администратор

Если в столбце 4 пусто, то не делать вычисление в этой строке?

Посетитель 16.08.2024

да, просто переходить к следующей, если в столбце нигде нет значений то просто пропусть весь столбец, типо того

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Спойлер
For ROW2 = 2 To targetRow - 1

    If Len(ActiveDocument.Tables(2).Cell(ROW2, 4).Range.Text) = 2 Then
        GoTo SkipRow
    End If
   
    cellV1 = ActiveDocument.Tables(2).Cell(ROW2, 5).Range.Text  'все значения пятого стобца
    cellV1 = Replace(cellV1, Chr(7), "")

   
    If cellV1 <> "" Then
        numberV1 = CDbl(cellV1)
    Else: GoTo SkipRow
    End If

   
    cellV2 = ActiveDocument.Tables(2).Cell(ROW2, 4).Range.Text 'все значения 4 стобца
    cellV2 = Replace(cellV2, Chr(7), "")

   
    If cellV2 <> "" Then
   
        numberV2 = CInt(cellV2)
        V = numberV1 * numberV2
        formattedV1 = Format(V, "###,##0.00")
        ActiveDocument.Tables(2).Cell(ROW2, 6).Range.Text = formattedV1
   
    Else: GoTo SkipRow
     
    End If

SkipRow:
Next ROW2
[свернуть]

Посетитель 16.08.2024

Большое спасибо за помощь, все заработало, я бы не понял как это надо исправить