VBA-код для выбора таблицы в курсоре, что позволяет избежать сбоя при отсутствии таблицы в курсоре - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующий макрос VBA, который выбирает таблицу в точке курсора, форматирует таблицу и форматирует текст.

Я хочу избежать сбоя (ошибки времени выполнения), когда курсор не находится в таблице, и вместо этого вывести сообщение типа «Сначала выберите таблицу».

Sub FormatTable(control As IRibbonControl)
'
' FormatTable Macro
'

Selection.Tables(1).Select
Selection.Tables(1).Style = "Prime Table 1"
Selection.Style = ActiveDocument.Styles("Normal")
End Sub

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Это можно сделать, посчитав количество таблиц в текущем выборе. Если их нет, будет ноль. В приведенном ниже примере кода при наличии нулевых таблиц отображается сообщение, но его, конечно, можно удалить.

Sub FormatTable(control As IRibbonControl)
'
' FormatTable Macro
'

  If Selection.Tables.Count > 0 Then
    Selection.Tables(1).Select
    Selection.Tables(1).Style = "Prime Table 1"
    Selection.Style = ActiveDocument.Styles("Normal")
  Else
    MsgBox "There's no table at the current selection."
  End If
End Sub
0 голосов
/ 17 января 2019

Попробуйте:

Sub FormatTable(control As IRibbonControl)
With Selection
  If .Information(wdWithInTable) = True Then
    .Tables(1).Style = "Prime Table 1"
    .Style = "Normal"
  Else
    MsgBox "There's no table at the current selection."
  End If
End With
End Sub
0 голосов
/ 16 января 2019

Лучший способ - полностью удалить элементы Selection и .Select, поскольку вам не нужно использовать их для взаимодействия с чем-либо в вашем документе.Однако, поскольку я не знаю достаточно о том, что вы делаете, это должно работать для ваших нужд:

Sub FormatTable(control As IRibbonControl)
'
' FormatTable Macro
'
On Error Resume Next ' allow code to progress even if an error occurs
Selection.Tables(1).Select
If Err.Number <> 0 Then Goto ErrHandler    ' Detect an error and step out to handle it
Selection.Tables(1).Style = "Prime Table 1"
Selection.Style = ActiveDocument.Styles("Normal")

On Error Goto 0 'switch off the On Error Resume Next as you really want to limit its use

ErrHandler:
MsgBox "Please Select a Table First"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...