позиция курсора

Подписаться на эту метку по RSS

    Как определить стиль абзаца, в котором находится курсор ввода

    Вопрос от Андрея:

    Сейчас пишу макрос следующего содержания - необходимо поставить курсор на любой из абзацев и получить полную информацию о стиле документа. Информацию о параметрах шрифта уже выбрал, пусть и не всю, но основую. Встал банальный вопрос - как из макроса получить имя стиля абзаца на котором в данный момент находится курсор?

    Получить имя текущего стиля слова, на котором находится курсор ввода, можно так:

    MsgBox Selection.Style

    Но можно и не использовать макрос - достаточно открыть область задач Показать форматирование («Shift+F1»), где и будет отображена вся информация о текущем стиле.

    Как определить номер параграфа, в котором найден фрагмент текста

    Рубрики: Вопрос-Ответ | Макросы
    Метки: | |
    Дата: 25/12/2008 13:52:24

    Анатолий задал вопрос:


    Как определить номер (pos) параграфа (Paragraphs), в котором найден нужный фрагмент, с тем, чтобы я смог его в дальнейшем использовать?


    Например, можно определить текущую позицию курсора в сантиметрах с помощью следующего макроса:

    Читать полностью







    Как определить нахождение курсора ввода в ячейке таблицы

    Рубрики: Макросы | Таблицы Word
    Метки: | |
    Дата: 07/11/2007 22:17:12

    Как узнать, находится ли курсор ввода в таблице в документе Word или нет?

    Недавно мне пришлось столкнуться с такой проблемой, когда я готовил шаблон документа для организации. Пришлось поспрашивать на тематических форумах по программированию. Решение нашлось быстро. Возможно оно кому-то и пригодится.

    P.S. Обнаружилось, что если курсор ввода находится в конце таблицы (не в последней ячейке, а за границей таблицы впритык к последней ячейке), то этот макрос выдает неверный результат.

    Правильнее использовать другой код (макрос + функция), опубликованный ниже макроса "PointIntoTable".

    Sub PointIntoTable 
    Set rngTable = Selection.Range 
    If Not rngTable.Information(wdWithInTable) Then 
        MsgBox prompt:="Курсор находится вне таблицы" 
    Else 
    ... 'ваш код после условия 
    End if 
    End sub

    Дополнено с учетом комментариев Вождя и Александра Витера:

    Sub PointIntoTable2()
    Dim rngTable As Range
    Set rngTable = Selection.Range
    If Range_InCell(rngTable) = True Then
      MsgBox prompt:="Курсор находится в таблице"
    Else
      MsgBox prompt:="Курсор находится вне таблицы"
    End If
    End Sub
     
    Public Function Range_InCell(ByRef icRange As Word.Range) As Boolean
    ' возвращает True, если область icRange целиком находится в ячейке
        Range_InCell = False
        On Error Resume Next
        If icRange.Information(wdWithInTable) <> True Then
        ElseIf icRange.Cells.Count <> 1 Then
        Else
            Range_InCell = True
        End If
    End Function

^ Наверх