Переменные в VBA для Word 2010 - PullRequest
0 голосов
/ 15 мая 2018

У меня есть этот код в VBA для Word 2010:

Public LastBodyPage
Sub tryit()
    Selection.GoTo What:=wdGoToBookmark, Name:="AppendixStart"
    LastBodyPage = Selection.Information(wdActiveEndPageNumber)
End Sub

Sub vardel()
    MsgBox Variables.item("LastBodyPage").Value
    MsgBox LastBodyPage
End Sub

Когда процедура vardel запущена, в первом окне сообщения отображается «53», а во второй раз - «50».

Почему я получаю разные значения ??

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Похоже, Variables.Items является частью переменных документа , для которых вы можете установить и присвоить значения.

LastBodyPage в вашей tryit процедуре рассматривается закладка AppendixStart, которую, я полагаю, вы также настроили.

Итак ...

  • AppendixStart добавлен в закладки на странице 50
  • Код ThisDocument.Variables.Add ("LastBodyPage"), 53 используется для добавления переменной документа где-то в вашем коде. Это сохраняется между открытием и закрытием документа - так, возможно, было добавлено давным-давно.
  • Ваш код использует ThisDocument.Variables...., а не просто Variables....

С этим условием я получил тот же результат, что и вы.

0 голосов
/ 15 мая 2018

Вы смотрите на две разные вещи:

В первом окне сообщения отображается что-то, называемое Variables.item (ваш код не компилируется, что такое Variables.item?).

В любом случае, второе окно сообщения отображает что-то совершенно другое, оно отображает LastBodyPage, которое вы предположительно установили с помощью tryit.

...