Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе рассматриваются конкретные сведения об использовании элементов ActiveX на листах и листах диаграмм. Общие сведения о добавлении элементов управления и работе с ними см. в разделах Использование элементов ActiveX в документе и Создание настраиваемого диалогового окна.
При работе с элементами управления на листах учитывайте следующие моменты:
Помимо стандартных свойств, доступных для элементов ActiveX, с элементами ActiveX в Microsoft Excel можно использовать следующие свойства: BottomRightCell, LinkedCell, ListFillRange, Placement, PrintObject, TopLeftCell и ZOrder.
Эти свойства можно задать и вернуть с помощью имени элемента activeX. В следующем примере окно книги прокручивается, поэтому CommandButton1 находится в левом верхнем углу.
Set t = Sheet1.CommandButton1.TopLeftCell With ActiveWindow .ScrollRow = t.Row .ScrollColumn = t.Column End With
Некоторые методы и свойства Microsoft Excel Visual Basic отключаются при активации элемента ActiveX. Например, метод Sort нельзя использовать, когда элемент управления активен, поэтому следующий код завершается ошибкой в процедуре события нажатия кнопки (так как элемент управления по-прежнему активен после его щелчка пользователем).
Private Sub CommandButton1.Click Range("a1:a10").Sort Key1:=Range("a1") End Sub
Эту проблему можно обойти, активировав другой элемент на листе перед использованием свойства или метода, который завершился ошибкой. Например, следующий код сортирует диапазон:
Private Sub CommandButton1.Click Range("a1").Activate Range("a1:a10").Sort Key1:=Range("a1") CommandButton1.Activate End Sub
Элементы управления книгой Microsoft Excel, внедренные в документ в другом приложении, не будут работать, если пользователь дважды щелкнет книгу, чтобы изменить ее. Элементы управления будут работать, если пользователь щелкнет книгу правой кнопкой мыши и выберет команду Открыть в контекстном меню.
При сохранении книги Microsoft Excel в формате файла книги Microsoft Excel 5.0/95 сведения об элементе управления ActiveX теряются.
Ключевое слово Me в процедуре события для элемента ActiveX на листе ссылается на лист, а не на элемент управления .
Добавление элементов управления с помощью Visual Basic
В Microsoft Excel элементы activeX представлены объектами OLEObject в коллекции OLEObjects (все объекты OLEObject также находятся в коллекции Shapes ). Чтобы программно добавить элемент ActiveX на лист, используйте метод Add коллекции OLEObjects . В следующем примере на лист 1 добавляется кнопка команды.
Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _
Left:=10, Top:=10, Height:=20, Width:=100
Использование свойств элемента управления с Visual Basic
Чаще всего код Visual Basic будет ссылаться на элементы ActiveX по имени. В следующем примере изменяется заголовок элемента управления с именем CommandButton1.
Sheet1.CommandButton1.Caption = "Run"
Обратите внимание, что при использовании имени элемента управления вне модуля класса для листа, содержащего элемент управления, необходимо указать имя элемента управления именем листа.
Чтобы изменить имя элемента управления, используемое в коде Visual Basic, выберите элемент управления и задайте свойство (Name) в окно свойств.
Так как элементы ActiveX также представлены объектами OLEObject в коллекции OLEObjects , можно задать свойства элемента управления с помощью объектов в коллекции. В следующем примере задается левое положение элемента управления с именем CommandButton1.
Worksheets(1).OLEObjects("CommandButton1").Left = 10
Свойства элемента управления, которые не отображаются как свойства объекта OLEObject , можно задать, возвращая фактический объект управления с помощью свойства Object . В следующем примере задается заголовок для CommandButton1.
Worksheets(1).OLEObjects("CommandButton1"). _
Object.Caption = "run me"
Так как все объекты OLE также являются членами коллекции Shapes , можно использовать коллекцию для задания свойств для нескольких элементов управления. В следующем примере левая граница всех элементов управления выравнивается на листе 1.
For Each s In Worksheets(1).Shapes
If s.Type = msoOLEControlObject Then s.Left = 10
Next
Использование имен элементов управления с коллекциями shapes и OLEObjects
Элемент ActiveX на листе имеет два имени: имя фигуры, содержащей элемент управления, которое отображается в поле Имя при просмотре листа, и кодового имени элемента управления, которое отображается в ячейке справа от (Имя) в окно свойств. При первом добавлении элемента управления на лист имя фигуры и код совпадают. Однако при изменении имени фигуры или кодового имени другое не будет автоматически изменено на соответствие.
Имя кода элемента управления используется в именах его процедур событий. Однако при возврате элемента управления из коллекции Shapes или OLEObjects для листа необходимо использовать имя фигуры, а не код, чтобы ссылаться на элемент управления по имени. Например, предположим, что вы добавили флажок на лист и что имя фигуры по умолчанию и код по умолчанию — CheckBox1. Если затем изменить имя кода элемента управления, введя chkFinished рядом с (Name) в окно свойств, необходимо использовать chkFinished в именах процедур событий, но вам все равно придется использовать CheckBox1 для возврата элемента управления из коллекции Shapes или OLEObject, как показано в следующем примере.
Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.