VBA > Paski narzędziowe w oknach VBA > Zarządzanie przyciskami na paskach narzędziowych > Dostęp do elementów kolekcji Controls

Drukuj

Dostęp do elementów kolekcji Controls

Aby dostać się bezpośrednio do obiektów kolekcji odpowiadających przyciskom na pasku narzędziowym należy podać numer obiektu w kolekcji lub jego nazwę. Jeżeli używana jest nazwa przycisku należy pamiętać, aby napis identyfikujący pasek narzędziowy był identyczny z nazwą przycisku (Caption), tzn. rozróżniane są małe – duże litery, należy również pamiętać o znaku "&". Dlatego też, aby uniknąć przypadkowych pomyłek dobrze jest zdefiniować stałe.

 

const nazwaPaska1 "Pasek 1"

const nazwaPrzycisku1 "&Dokument"

 

Dim st as MsoButtonState

Dim bar as CommandBar

 

Set bar = CommandBars(nazwaPaska1)

if bar is Nothing Then

'Pasek nie istnieje

End If

 

st = bar.Controls.Item(1).Type

t = bar.Item("&Dokument ").Type

lub

t = bar.Item(nazwaPrzycisku1).Type

 

Ponieważ metoda Item jest domyślną dla obiektu, nie jest konieczne podawanie jej w sposób jawny.

t = bar(1).Type

t = bar("&Dokument ").Type

lub

t = CommandBars(nazwaPrzycisku1).Type

 

Należy pamiętać, że bezpośrednie odwołanie do metod i właściowści elementów kolekcji (bar(1).Type) w przypadku, gdy nie istnieje szukany element (lub jego innego typu i nie posiada właściwości i metod, których zamierzamy użyć), spowoduje powstanie błędu. Dlatego też należy upewnić się czy obiekt istnieje (przed dostępem do elementu) lub należy błędy obsłużyć – "On Error...".

 

Środowisko VBA automatycznie podpowiada właściwości i metody obiektu po wpisaniu kropki. Należy zwrócić uwagę na to, iż obiekty typu CommandBaRButton (przyciski) znajdują się w kolekcji Controls obiektu CommandBar. Ze względu na architekturę obiektów kontrolnych kolekcja ta może zawierać również obiekty typu CommandBarPopup (czyli podmenu w obiektach menu). Dlatego też automatyczne podpowiedzi po naciśnięciu kropki – CommandBars("Pasek 1").Controls(1). – wyświetlą tylko te właściwości (property) i metody, które są wspólne dla obu typów tych obiektów. Specyficzne właściwości i metody dla obiektu CommandBarButton zostaną "podpowiedziane" wtedy:

Dim but as CommandBarButton

Set but = CommandBars("Pasek 1").Controls(1)

but. ...

 

Te specyficzne właściwości obiektu CommandBarButton to: State i FaceId.