Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сноски: всплывающие подсказки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Сноски: всплывающие подсказки
auto-teacher Дата: Четверг, 02.07.2020, 13:36 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Word 2016. Возможно ли сделать такое?
По команде с ленты: Вкладка Ссылки/Сноски/Следующая сноска программа находит знак сноски, и курсор становится слева от него. Больше ничего не происходит; можно навести на эту сноску указатель мыши, и появится всплывающая подсказка.
Мне всегда казалось это недостаточным, и всегда хотелось, чтобы всплывающая подсказка появлялась не после наведения указателя на сноску, а сразу после выполнения указанной команды.
То есть, суть мечты: назначаешь для FootnotePreviousWord и FootnoteNextWord горячие клавиши (например: Alt+O и Alt+>) и переходишь по сноскам, сразу читая подсказки к ним.
Красиво и конкретно подсказать никто не захотел, и пришлось искать выход окольными путями, объединяя помощь с разных форумов. В результате получилось вот что:
[vba]
Код
Sub СноскаОбычнаяПред()
Dim cX As Long, cY As Long, i As Byte
If ActiveDocument.Footnotes.Count = 0 Then
    lRetVal = MsgboxOKDrop("Обычных сносок еще никто не вставил!" & vbCrLf & _
    "Возможно, есть концевые сноски!", vbOKOnly + vbInformation, "ОТСУТСТВИЕ СНОСОК В ТЕКСТЕ", interval)
ElseIf Selection.StoryType = wdFootnotesStory Then ' Для концевых выбран другой вариант выделения
        Application.Run "GoToPreviousFootnote"
    Else ' Если курсор в основном тексте
        Application.Run "GoToPreviousFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
' На данный момент (02.02.2020) это самый действенный цикл для более-менее надежного всплытия подсказок к ссылкам, сноскам, примечаниям и гиперссылкам.
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах (Знать бы еще, что тут происходит. Но оно работает!)
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
        Set r = Selection.Range
        If (r.Start <> Selection.Start) Or (r.End <> Selection.End) Then
        ElseIf Selection.Characters.First.Footnotes.Count <= 0 Then
            lRetVal = MsgboxOKDrop("Выше обычных сносок нет!" & vbCrLf & _
            "Попробуй поискать вниз!", vbOKOnly + vbInformation, "ВСЕ ОБЫЧНЫЕ СНОСКИ НИЖЕ", interval)
            Exit Sub
        End If
End If
End Sub
[/vba]
[vba]
Код
Sub СноскаОбычнаяСлед()
Dim cX As Long, cY As Long, i As Byte
If ActiveDocument.Footnotes.Count = 0 Then
        lRetVal = MsgboxOKDrop("Обычных сносок еще никто не вставил!" & vbCrLf & _
        "Возможно, есть концевые сноски!", vbOKOnly + vbInformation, "ОТСУТСТВИЕ СНОСОК В ТЕКСТЕ", interval)
    ElseIf Selection.StoryType = wdFootnotesStory Then ' Для концевых выбран другой вариант выделения
        Application.Run "GoToNextFootnote"
    Else ' Если курсор в основном тексте
        Application.Run "GoToNextFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах (Знать бы еще, что тут происходит. Но оно работает!)
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
Set r = Selection.Range
    If (r.Start <> Selection.Start) Or (r.End <> Selection.End) Then
    ElseIf Selection.Characters.First.Footnotes.Count <= 0 Then
        lRetVal = MsgboxOKDrop("Ниже обычных сносок нет!" & vbCrLf & _
        "Попробуй поискать вверх!", vbOKOnly + vbInformation, " ВСЕ ОБЫЧНЫЕ СНОСКИ ВЫШЕ", interval)
        Exit Sub
    End If
End If
End Sub
[/vba]
В этих макросах ключевым моментом является цикл (мало для меня понятный), но подбором значений я добился, что подсказки к сноскам каким-то чудом появляются, как будто на них наводится мышь.
Что интересно, достигнутый эффект оказался полезным для перехода и по концевым сноскам, а также по примечаниям и гиперссылкам (при замене соответствующих команд).
Одно плохо: не всегда четко срабатывает. Что-то иногда "пугает" всплывающие подсказки, и они всплывают нестабильно, причем, по-разному для сносок, концевых сносок, гиперссылок и примечаний.
Вопрос: можно ли и как сделать все, что задумано, правильными средствами, а не моей галиматьей?
Может, кто-нибудь как следует въедет в тему и догадается?


auto-teacher

Сообщение отредактировал auto-teacher - Четверг, 02.07.2020, 13:40
 
Ответить
СообщениеWord 2016. Возможно ли сделать такое?
По команде с ленты: Вкладка Ссылки/Сноски/Следующая сноска программа находит знак сноски, и курсор становится слева от него. Больше ничего не происходит; можно навести на эту сноску указатель мыши, и появится всплывающая подсказка.
Мне всегда казалось это недостаточным, и всегда хотелось, чтобы всплывающая подсказка появлялась не после наведения указателя на сноску, а сразу после выполнения указанной команды.
То есть, суть мечты: назначаешь для FootnotePreviousWord и FootnoteNextWord горячие клавиши (например: Alt+O и Alt+>) и переходишь по сноскам, сразу читая подсказки к ним.
Красиво и конкретно подсказать никто не захотел, и пришлось искать выход окольными путями, объединяя помощь с разных форумов. В результате получилось вот что:
[vba]
Код
Sub СноскаОбычнаяПред()
Dim cX As Long, cY As Long, i As Byte
If ActiveDocument.Footnotes.Count = 0 Then
    lRetVal = MsgboxOKDrop("Обычных сносок еще никто не вставил!" & vbCrLf & _
    "Возможно, есть концевые сноски!", vbOKOnly + vbInformation, "ОТСУТСТВИЕ СНОСОК В ТЕКСТЕ", interval)
ElseIf Selection.StoryType = wdFootnotesStory Then ' Для концевых выбран другой вариант выделения
        Application.Run "GoToPreviousFootnote"
    Else ' Если курсор в основном тексте
        Application.Run "GoToPreviousFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
' На данный момент (02.02.2020) это самый действенный цикл для более-менее надежного всплытия подсказок к ссылкам, сноскам, примечаниям и гиперссылкам.
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах (Знать бы еще, что тут происходит. Но оно работает!)
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
        Set r = Selection.Range
        If (r.Start <> Selection.Start) Or (r.End <> Selection.End) Then
        ElseIf Selection.Characters.First.Footnotes.Count <= 0 Then
            lRetVal = MsgboxOKDrop("Выше обычных сносок нет!" & vbCrLf & _
            "Попробуй поискать вниз!", vbOKOnly + vbInformation, "ВСЕ ОБЫЧНЫЕ СНОСКИ НИЖЕ", interval)
            Exit Sub
        End If
End If
End Sub
[/vba]
[vba]
Код
Sub СноскаОбычнаяСлед()
Dim cX As Long, cY As Long, i As Byte
If ActiveDocument.Footnotes.Count = 0 Then
        lRetVal = MsgboxOKDrop("Обычных сносок еще никто не вставил!" & vbCrLf & _
        "Возможно, есть концевые сноски!", vbOKOnly + vbInformation, "ОТСУТСТВИЕ СНОСОК В ТЕКСТЕ", interval)
    ElseIf Selection.StoryType = wdFootnotesStory Then ' Для концевых выбран другой вариант выделения
        Application.Run "GoToNextFootnote"
    Else ' Если курсор в основном тексте
        Application.Run "GoToNextFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах (Знать бы еще, что тут происходит. Но оно работает!)
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
Set r = Selection.Range
    If (r.Start <> Selection.Start) Or (r.End <> Selection.End) Then
    ElseIf Selection.Characters.First.Footnotes.Count <= 0 Then
        lRetVal = MsgboxOKDrop("Ниже обычных сносок нет!" & vbCrLf & _
        "Попробуй поискать вверх!", vbOKOnly + vbInformation, " ВСЕ ОБЫЧНЫЕ СНОСКИ ВЫШЕ", interval)
        Exit Sub
    End If
End If
End Sub
[/vba]
В этих макросах ключевым моментом является цикл (мало для меня понятный), но подбором значений я добился, что подсказки к сноскам каким-то чудом появляются, как будто на них наводится мышь.
Что интересно, достигнутый эффект оказался полезным для перехода и по концевым сноскам, а также по примечаниям и гиперссылкам (при замене соответствующих команд).
Одно плохо: не всегда четко срабатывает. Что-то иногда "пугает" всплывающие подсказки, и они всплывают нестабильно, причем, по-разному для сносок, концевых сносок, гиперссылок и примечаний.
Вопрос: можно ли и как сделать все, что задумано, правильными средствами, а не моей галиматьей?
Может, кто-нибудь как следует въедет в тему и догадается?

Автор - auto-teacher
Дата добавления - 02.07.2020 в 13:36
krosav4ig Дата: Понедельник, 03.08.2020, 23:47 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Может, кто-нибудь как следует въедет в тему и догадается?

а может кто-нибудь таки выложит файл-пример со сносками?


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение
Может, кто-нибудь как следует въедет в тему и догадается?

а может кто-нибудь таки выложит файл-пример со сносками?

Автор - krosav4ig
Дата добавления - 03.08.2020 в 23:47
auto-teacher Дата: Вторник, 04.08.2020, 03:05 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
krosav4ig, очень сорри!
Сноски-то не я придумал, так что можно было в любом своем доке самому их навставлять штук несколько и походить по ним.
Но если именно без моего примера никак нельзя разобраться, то гружу "Файл-пример со сносками" и теперь уж очень надеюсь, что гениальное решение найдется обязательно.
И я извиняюсь еще за то, что случайно оставил в макросах код самогаснущих сообщений, для появления которых нужны дополнительные условия. Без кода сообщений макросы выглядят так:
[vba]
Код
Sub СноскаОбычнаяПредыдущая()
Dim cX As Long, cY As Long, i As Byte
        Application.Run "GoToPreviousFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
End Sub
[/vba]
[vba]
Код
Sub СноскаОбычнаяСледующая()
Dim cX As Long, cY As Long, i As Byte
        Application.Run "GoToNextFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
End Sub
[/vba]
Повторюсь: я не до конца понимаю, как действует цикл, который шевелит курсор. Когда я где-то сдувал это все по отдельности, я предположил: можно будет подобрать количество скачков курсора по вертикали и по горизонтали, и задержку, имитируя наведение мыши на знак сноски.
В итоге цель мультипликации как бы достигнута, но я чувствую, что с точки зрения программирования на VBA это бред.
К сообщению приложен файл: -__.docx (55.1 Kb)


auto-teacher

Сообщение отредактировал auto-teacher - Вторник, 04.08.2020, 11:20
 
Ответить
Сообщениеkrosav4ig, очень сорри!
Сноски-то не я придумал, так что можно было в любом своем доке самому их навставлять штук несколько и походить по ним.
Но если именно без моего примера никак нельзя разобраться, то гружу "Файл-пример со сносками" и теперь уж очень надеюсь, что гениальное решение найдется обязательно.
И я извиняюсь еще за то, что случайно оставил в макросах код самогаснущих сообщений, для появления которых нужны дополнительные условия. Без кода сообщений макросы выглядят так:
[vba]
Код
Sub СноскаОбычнаяПредыдущая()
Dim cX As Long, cY As Long, i As Byte
        Application.Run "GoToPreviousFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
End Sub
[/vba]
[vba]
Код
Sub СноскаОбычнаяСледующая()
Dim cX As Long, cY As Long, i As Byte
        Application.Run "GoToNextFootnote"
            ActiveWindow.GetPoint cX, cY, 0&, 0&, Selection.Range
                For i = 0 To 1
                    SetCursorPos cX + i, cY + i
                    Dim Start
                    Start = Timer ' текущее время в секундах
                    Do While Timer < Start + 0.1
                    Loop
                Next i
                    SetCursorPos cX + i, cY + i
End Sub
[/vba]
Повторюсь: я не до конца понимаю, как действует цикл, который шевелит курсор. Когда я где-то сдувал это все по отдельности, я предположил: можно будет подобрать количество скачков курсора по вертикали и по горизонтали, и задержку, имитируя наведение мыши на знак сноски.
В итоге цель мультипликации как бы достигнута, но я чувствую, что с точки зрения программирования на VBA это бред.

Автор - auto-teacher
Дата добавления - 04.08.2020 в 03:05
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!