Как расчитать автосумму в таблице Word для выделенных ячеек?

Программирование на Visual Basic for Applications
baston
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 13.09.2007 (Чт) 11:21

Как расчитать автосумму в таблице Word для выделенных ячеек?

Сообщение baston » 21.11.2008 (Пт) 16:19

Здравствуйте.
Есть две таблицы в документе Word. Состоят из множества строк и нескольких столбцов. Ячейки столбцов содержат цифровые значения. Я выделяю все ячейки в конкретном столбце (не захватывая первую ячейку верхнюю - заголовок).

Необходимо: получить сумму значений из выделенных ячеек и занести в переменную.
Затем я снова вручную выделяю ячейки из конкретного столбца уже второй таблицы и теперь мне нужно проссумировать значения уже из этих выделенных ячеек и прибавить к этой сумме то значение, которое мы сохранили в переменной для первой таблицы. Ну и вывести результат итоговый в виде сообщения.
Как это можно сделать программно?

P.S. Ячейки столбца я выделяю вручную. Нужно лишь проссумировать их и занести в переменную.
Спасибо.

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Re: Как расчитать автосумму в таблице Word для выделенных ячеек?

Сообщение Shurrik » 25.11.2008 (Вт) 6:48

Если я правильно понял то надо подсчитать ВЕСЬ столбец. Для этого не обязательно его весь выделять, достаточно просто в нем находиться.
Вот такой код можно поместить в ThisDocument или модуль
Код: Выделить всё
Public su1 As Double, su2 As Double

' макрос, котрый подсчитывает "k" столбец "n" таблицы
Private Function SumKol(n As Integer, k As Integer) As Double
Dim su As Double, i As Integer, m As Integer
' узнаем количество строк в таблице
m = ThisDocument.Tables(n).Rows.Count
' суммируем столбец
For i = 2 To m
su = su + Val(ThisDocument.Tables(n).Cell(i, k).Range.Text)
Next i
SumKol = su
End Function

' Посчет первой суммы (маркер должен быть в первой таблице !!!)
Public Sub Summa1()
Dim k As Integer
k = Selection.Cells(1).ColumnIndex
su1 = SumKol(1, k)
End Sub

' Посчет второй суммы (маркер должен быть во второй таблице !!!)
Public Sub Summa2()
Dim k As Integer
k = Selection.Cells(1).ColumnIndex
su2 = SumKol(2, k)
' выводим результат
MsgBox su1 & " + " & su2 & vbCrLf & " = " & su1 + su2
End Sub


Надеюсь как вызвать макросы или сделать им кнопки объяснять не надо.
Колесо: Хочешь жить? Умей вертеться.

baston
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 13.09.2007 (Чт) 11:21

Re: Как расчитать автосумму в таблице Word для выделенных ячеек?

Сообщение baston » 25.11.2008 (Вт) 10:05

Спасибо огромное!

Alec
Бывалый
Бывалый
 
Сообщения: 275
Зарегистрирован: 31.08.2008 (Вс) 0:15
Откуда: Ростов-на-Дону

Re: Как расчитать автосумму в таблице Word для выделенных ячеек?

Сообщение Alec » 25.11.2008 (Вт) 20:56

А так - только выделенные ячейки таблицы:
Код: Выделить всё
Dim Res As Single

Function SummSelectionCol() As Single
  Dim S As Single
  Dim Cell As Cell
  If Selection.Tables.Count > 0 Then
    For Each Cell In Selection.Cells
      S = S + Val(Cell.Range.Text)
    Next Cell
  Else
    MsgBox "Выделение не содержит таблицы!", , "Ошибка!"
  End If
  SummSelectionCol = S
End Function

Sub Summ1()
  Res = SummSelectionCol
  MsgBox "Первая сумма:" & vbCrLf & Res
End Sub

Sub Summ2()
  Dim Res1 As Single
  Res1 = SummSelectionCol
  Res = Res + Res1
  MsgBox "Вторая сумма:" & vbCrLf & Res1 & vbCrLf & "Результат:" & vbCrLf & Res
  Res = 0
End Sub

Иногда лучше вовремя остановиться...
И начать заново!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 90

    TopList