У меня есть таблица в MS Word, состоящая из элементов раскрывающегося списка, а также столбцов, которые отображают и выводят значения в зависимости от комбинации выбранных элементов раскрывающегося списка. Я получаю ошибку «Ошибка времени выполнения» 13 «Несоответствие типов», когда в наборе выбран только один из элементов раскрывающегося списка.
Как мне поступить с этой ошибкой?
Примечание. В каждом наборе есть два раскрывающихся списка, если выбран только один, а затем пользователь щелкает мышью. Мне бы хотелось, чтобы столбец результатов вернулся к значению по умолчанию, которое ничего не отображает.
Я знаю, что это должно быть сделано в Excel, но мне, к сожалению, приходится работать с тем, что у меня есть.
Мой код работает правильно и не выдает никаких ошибок, если перед щелчком мыши выбран элемент не по умолчанию. Однако, если выбран только элемент только из одного раскрывающегося списка, а значение другого раскрывающегося списка остается значением по умолчанию, отображается ошибка.
Ошибка также отображается, если я пытаюсь отменить выбор одного из элементов раскрывающегося списка, но не обоих.
Ошибка времени выполнения '13'
Несоответствие типов
Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim CField As String, LField As String, RField As String, CText As String, LText As String, CRate As Double, LRate As Double, RRate As Double, RCat As String, RCatField As String
Select Case CC.Title
Case "C1", "L1"
CField = "C1"
LField = "L1"
RField = "R1"
RCatField = "RR1"
Case "C2", "L2"
CField = "C2"
LField = "L2"
RField = "R2"
RCatField = "RR2"
Case Else
Exit Sub
End Select
CText = Left(ActiveDocument.SelectContentControlsByTitle(CField).Item(1).Range.Text, 1)
LText = Left(ActiveDocument.SelectContentControlsByTitle(LField).Item(1).Range.Text, 1)
If Not IsNumeric(CText) Then
With ActiveDocument.SelectContentControlsByTitle(RField)(1)
.LockContents = False
.Range.Text = ""
.LockContents = True
End With
With ActiveDocument.SelectContentControlsByTitle(RCatField)(1)
.LockContents = False
.Range.Text = ""
.LockContents = True
End With
End If
If Not IsNumeric(LText) Then
Exit Sub
End If
LRate = LText
CRate = CText
RRate = ((CRate * 3) + (LRate * 2)) * 4
Select Case RRate
Case Is < 41
RCat = "Low"
Case Is < 55
RCat = "Moderate"
Case Is < 70
RCat = "High"
Case Is >= 70
RCat = "Catastrophic"
End Select
With ActiveDocument.SelectContentControlsByTitle(RField)(1)
.LockContents = False
.Range.Text = RRate
.LockContents = True
End With
With ActiveDocument.SelectContentControlsByTitle(RCatField)(1)
.LockContents = False
.Range.Text = RCat
.LockContents = True
End With
End Sub