Макрос паузы Word 2007 VBA для пользователя, чтобы вручную выбрать позицию или диапазон курсора с помощью мыши

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

Я попытался написать процедуру окна ввода, которая позволяет пользователю выбирать диапазон или проверять и изменять предварительно выбранный диапазон (если они забыли сделать это перед выполнением макроса или должны выбрать конкретную область во время макроса.

Похоже, что поле ввода не имеет такой возможности словом?

Может ли кто-нибудь помочь с тем, как этого можно достичь?

Я сделал это в Excel с помощью InputBox, но код не работает в Word и не нашел ничего полезного в Google...

Это код в Excel, который делает то, что я хочу, словом:

     'input box prompt+pause to select range
    Set User_RangeSelection = Application.InputBox("select cells to move, with the mouse", Default:=Selection.Address, Type:=8)
        If User_RangeSelection Is Nothing Then 'if cancel is clicked - otherwise selects existing cell selection
            MsgBox "No Selection made, exiting."
'            Exit Sub 'cancels the whole macro after this routine!
        End If
'---------------------------------------------------
    User_SelectedRange = User_RangeSelection.Address(False, False) 'name the selection as a range
    Range(User_SelectedRange).Select 'selects range IN SHEET; OR enter single commands here
'------------------------- Code to execute on/with selection

Код / синтаксис слова явно совершенно другой - пробовали много изменений, но ни у одного из них не было всплывающих кодов ошибок.

"TYPE:=8" "ИМЯ АРГУМЕНТ НЕ НАЙДЕН"

После удаления вышеприведенной строки в поле ввода отображается однострочный бит фактической выбранной строки, НЕ отображается выделенная в документе область и не разрешается щелкать в документе.

"как диапазон" добавлено в конце "Ожидается: конец оператора"

"адрес"-"Метод или элемент данных не найден"

"диапазон" "подпрограмма или функция не определены"

1 ответ

Действительно, то, как Word реализует VBA InputBoxотличается от Excel. Excel - это "одна большая таблица"; Word - это действительно "просто текст", отформатированный на экране так, чтобы он выглядел как таблица, где это необходимо. Это "почему", стоящее за поведением, FWIW.

У вас должно получиться сделать что-то подобное, но для этого потребуется немного больше работы. Я не могу дать вам точное решение, так как точные требования не ясны, и это было бы немного "слишком широко". Но чтобы вы начали с основной части "укажите диапазон"...

(Примечание: я набираю это по памяти на мобильном устройстве, поэтому могут быть синтаксические ошибки)

Dim CellRef as String, RowIndex as Variant, ColIndex as Variant
Dim CommaPos as Long
Dim Tbl as Word.Table, Cel as Word.Cell, Dim rng as Word.Range

If Selection.Information(wdWithinTable) Then
  CommaPos = Instr(CellRef, ",")
  CellRef = InputBox("Type in the cell row and column (1,3)")
  If CommaPos <> 0 Then
    RowIndex = Left(CellRef, CommaPos-1)
    ColIndex = Mid(CellRef, CommaPos + 1)
    Set tbl = Selection.Tables(1)
    Set Cel = tbl.Cell(rowIndex, colIndex)
    Set rng = cel.Range
  Else
    MsgBox "Please enter a correct cell reference")
  End If
Else
  MsgBox "Please click in the table, first"
End If
Другие вопросы по тегам