VBA > Paski narzędziowe w oknach VBA > Zarządzanie przyciskami na paskach narzędziowych > Dostęp do elementów kolekcji Controls | | Drukuj |
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.