У меня есть документ MS Word, где я требую, чтобы пользователи выбирали числовое значение от 1 до 5 в различных элементах управления ContentControl для нескольких вопросов. Я ввел кнопку «Рассчитать» в do c. Когда пользователи нажимают эту кнопку, код вычисляет среднее значение их входных данных и вводит результат в различные ячейки, отмеченные закладками.
Это отлично работает. За исключением случаев, когда некоторые ContentControls оставлены пустыми. Поэтому я хочу, чтобы всплывающее окно появлялось, когда один или несколько входов ContentControl не получили ответа.
Вот моя попытка ввести код:
Private Sub Calculate_Click()
Dim ccs1 As ContentControls
Dim cc1 As ContentControl
Dim content1 As String
Dim ccs2 As ContentControls
Dim cc2 As ContentControl
Dim content2 As String
Dim MissingData As String
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
' Error if Rating1 to Rating 19 are PlaceholderText
For i = 1 To 19
TagName1 = "Rating" & i
TagName2 = "RT" & i
Set doc = ActiveDocument
Set ccs1 = doc.SelectContentControlsByTag(TagName1)
Set cc1 = ccs1(1)
content1 = cc1.Range
Set ccs2 = doc.SelectContentControlsByTag(TagName2)
Set cc2 = ccs2(1)
content2 = cc2.Range
If content1 = cc1.PlaceholderText Then
MissingData = MissingData & vbCrLf & "- " & content2
End If
Next i
If MissingData <> "" Then
MsgBox "Please enter the following before submitting:" & MissingData
End
End If
Call updateDouble(ActiveDocument, "Rating", 1, 18, "TotalRating")
Call updateDouble(ActiveDocument, "Rating", 1, 4, "OrgRating")
Call updateDouble(ActiveDocument, "Rating", 5, 7, "TeamRating")
Call updateDouble(ActiveDocument, "Rating", 8, 10, "StratRating")
Call updateDouble(ActiveDocument, "Rating", 11, 14, "PandPRating")
Call updateDouble(ActiveDocument, "Rating", 15, 18, "EvidenceRating")
Call updateDouble(ActiveDocument, "Rating", 19, 19, "ESGRating")
End Sub
Private Sub updateDouble(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
Закомментированная строка code - это начало обработки ошибок. Может ли кто-нибудь увидеть, где я ошибся? В настоящее время при нажатии кнопки «Рассчитать» я не вижу всплывающего окна MsgBox, и код пытается (и не может) вычислить средние значения.
Заранее большое спасибо.