MS Word VBA: вычислить среднее значение входных данных ContentControl и вставить в закладку в таблице - PullRequest
0 голосов
/ 13 июля 2020

У меня есть документ MS Word, в котором я требую от пользователей выбрать числовое значение от 1 до 5 в различных элементах управления ContentControl для нескольких вопросов.

Я вставил вверху кнопки do c a с именем Calculate. Когда пользователи нажимают эту кнопку, я хочу взять среднее значение их входных данных и ввести результат в ячейку с закладкой в ​​таблице. Элементы управления контентом, вводимые пользователем, называются «RTi», где я работаю от 1 до 20.

Private Sub Calculate_Click()
    Dim TotalRating As Double
    Dim OrgRating As Double
    Dim TeamRating As Double
    Dim StratRating As Double
    Dim PandPRating As Double
    Dim EvidenceRating As Double
    Dim ESGRating As Double
    Dim ODDRatnig As String
    
   ' Average of RT 1 to 4,input to bookmark "TotalRating" as Double
   ' Average of RT 5 to 7, input to bookmark "OrgRating" as Double
   ' Average of RT 8 to 10, input to bookmark "StratRating" as Double
   ' Average of RT 11 to 14, input to bookmark "PandPRating" as Double
   ' Average of RT 15 to 18, input to bookmark "EvidenceRating" as Double
   ' Value of RT 19, input to bookmark "ESGRating" as Double
   ' Value of RT 20, input to bookmark "ODDRating" as String
   

End Sub

У меня возникли некоторые проблемы с началом работы, но я выполнил шаги, указанные выше, которые я должен выполнить sh . Если кто-нибудь любезно поможет мне с примером для первого закомментированного раздела выше, показывающего код, который будет выполнять среднее значение или RT1, RT2, RT3 и RT4, и введите результат в закладку TotalRating.

1 Ответ

0 голосов
/ 13 июля 2020

Например, если у вас есть ячейка , помеченная как как "TotalRating". Но вам нужно будет иметь дело со всеми возможными ошибочными состояниями (например, они не вводят номер, номера неправильно распознаются Word, нет CC с соответствующими заголовками, нет закладки с правильным именем , в ячейке более одного абзаца, et c. et c.). Если у вас есть вопросы по любому из этих вопросов, не задавайте здесь дополнительных вопросов. Что нужно сделать, это изучить их, а затем, если вы не можете выработать ответ, задайте новый вопрос и укажите этот.

' Average of RT 1 to 4,input to bookmark "TotalRating" as Double
Call updateDoubleTotal(ActiveDocument,"RT",1,4,"TotalRating")

Sub updateDoubleTotal(doc As Word.Document, CCTitlePrefix As String, StartNum As Integer, EndNum As Integer, CellName As String)
Dim i As Integer
Dim Total As Double
Total = 0
With doc
  For i = StartNum To EndNum
    Total = Total + CDbl(.SelectContentControlsByTitle(CCTitlePrefix & CStr(i))(1).Range.Text)
  Next
  .Bookmarks(CellName).Range.Paragraphs(1).Range.Text = CStr(Total / (1 + (EndNum - StartNum)))
End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...