VBA Word работа с таблицами. Как сделать несколько итогов в одном столбце.

Статус
Закрыто для дальнейших ответов.

lioon

Участник
Топикстартер
Сообщения
1
Реакции
0
Исходные данные:
таблица в word в ней после нажатия кнопки происходят вычисления и посредством
m = ThisDocument.Tables(2).Rows.Count записываются в последнюю строку (количество строк может быть различное, поэтому в цикле и задействована m).

пример:

Private Sub Summa11()
Dim x As Single, i As Integer
Dim myTable As Table
Dim myStr As String
Dim m As Integer
x = 0
Set myTable = ActiveDocument.Tables(2)

m = ThisDocument.Tables(2).Rows.Count
For i = 2 To m - 1
x = x + myTable.Cell(i, 11).Range.Calculate
x = FormatNumber(x, 3)
Next i
myStr = x
myTable.Cell(m, 11).Range.Delete
myTable.Cell(m, 11).Range.InsertAfter (myStr)
End Sub

Сложность возникла, когда возникла необходимость сделать несколько расчётов в одном столбце.
Коллеги подскажите, как отследить в какой строке закончился 1-ый расчёт и с какой следует начать второй.
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: VBA Word работа с таблицами. Как сделать несколько итогов в одном столбце.

Если я правильно понял, Вам с одними и теми же данными нужно произвести разные вычисления (типа "4+3-1" и "4*3+1")? В таком случае придумываете еще одну переменную (например y) параллельно с x-ом вычисляете и ее.
Если имелось в виду что-то другое, выкладывайте пример таблицы и опишите что надо получить.
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: VBA Word работа с таблицами. Как сделать несколько итогов в одном столбце.

Я так понимаю, что Вы в первый раз увидели VBA и пытаетесь разобраться что, где и почему.
Вот Вам ваш же откомментированный код с небольшими правками.
Код:
Private Sub Summa11()
  Dim x As Single, i As Integer
  Dim myTable As Table
  Dim myStr As String
  Dim m As Integer
  x = 0
  
  Set myTable = ActiveDocument.Tables(2) 'работаем со второй таблицей документа, обзываем её myTable
  m = myTable.Rows.Count 'кол-во строк в таблице
  
  For i = 2 To m - 1 'со второй строки до предпоследней
    x = x + myTable.Cell(i, 11).Range.Calculate 'вычисляем содержимое 11-го столбца i-й строки и добавляем к x
  Next i
  x = FormatNumber(x, 3) 'форматируем отображение х
  myTable.Cell(m, 11).Range = x ' записываем х в последнюю строку
End Sub
 
Статус
Закрыто для дальнейших ответов.