Thread View: pl.comp.lang.vbasic
6 messages
6 total messages
Started by Borafu
Wed, 13 Jan 2010 14:37
[VBA Excel 2003] jak się dostać do CommandButton
Author: Borafu
Date: Wed, 13 Jan 2010 14:37
Date: Wed, 13 Jan 2010 14:37
33 lines
1765 bytes
1765 bytes
Mam w skoroszycie 2 arkusze i jeden z nich zawiera przyciski
(CommandButton).
Chciałbym przy otwieraniu skoroszytu ustawić jednemu takiemu (powiedzmy
że się nazywa btnWykonaj) właściwość Enabled = False.
No i błądzę po omacku, bo:
jak użyję Worksheet_Activate() to jest OK tylko wtedy kiedy skoroszyt
otwiera się na innym arkuszu i przełączam się na ten właściwy. Jeśli
arkusz z guzikami jest tym, który jest aktywny po otwarciu skoroszytu to
Worksheet_Activate() nie odpala się i kiszka.
Chciałem użyć Workbook_Open() ale nie wiem jak się odwołać do
CommandButtona z konkretnego arkusza.
Chciałem przez analogię do tej konstrukcji:
Dim arkuszFZ As Worksheet
Set arkuszFZ = ThisWorkbook.Worksheets.Item("FZ")
arkuszFZ.Cells(10, 1) = "Ala ma kota" '<-- to mi działa
Ale już takie coś nie działa:
arkuszFZ.btnWykonaj.Enabled = False
Daje komunikat "Method or data member not found"
Jak to się robi?
Pozdro
--
Borafu
Re: [VBA Excel 2003] jak się dostać do CommandButton
Author: janusz
Date: Wed, 13 Jan 2010 18:10
Date: Wed, 13 Jan 2010 18:10
7 lines
1230 bytes
1230 bytes
Witam Po prostu napisz NazwaAkrusza.CommandButton1.Enabled = True Janusz
Re: [VBA Excel 2003] jak się dostać do CommandButton
Author: Borafu
Date: Wed, 13 Jan 2010 22:03
Date: Wed, 13 Jan 2010 22:03
16 lines
1086 bytes
1086 bytes
janusz pisze: > Witam > > Po prostu napisz > > NazwaAkrusza.CommandButton1.Enabled = True Niestety :-( Run-time error '424': Object required Pozdro -- Borafu
Re: [VBA Excel 2003] jak się dostać do CommandButton
Author: Michal AKA Miki
Date: Thu, 14 Jan 2010 00:02
Date: Thu, 14 Jan 2010 00:02
44 lines
2518 bytes
2518 bytes
Użytkownik "Borafu" <borafu_NIELUBIESPAMU@gazeta.pl> napisał w wiadomości
news:hilfvn$1lk$1@inews.gazeta.pl...
> janusz pisze:
>> Witam
>>
>> Po prostu napisz
>>
>> NazwaAkrusza.CommandButton1.Enabled = True
>
> Niestety :-(
>
> Run-time error '424':
> Object required
>
To w takim razie zle napisales, bo normalnie to dziala.
Zobacz w edytorze VBA wlasciwosci arkusza - ma on 2 wlasciwosci Name - jedna
w nawiasach, a druga bez. Ta w nawiasach to nazwa kodowa i ja wlasnie
uzywasz. Jesli chcesz uzywac nazwy na zakladce, mozesz uzywac cos na
ksztalt:
ThisWorkbook.Worksheets("Arkusz1").CommandButton1.Enabled = False
Oczywiscie wszystko musisz dokladnie sprawdzic - jak sie nazywa twoj
CommandButton, jak sie nazywa arkusz (wg nazwy kodowej albo na zakladce w
zaleznosci od wersji).
wg twojej analogii powinno to wygladac tak:
Dim arkuszFZ As Worksheet
Set arkuszFZ = ThisWorkbook.Worksheets("FZ")
arkuszFZ.CommandButton1.Enabled = False
Jesli znowu zwroci "Method or data member not found", zweryfikuj, czy
rzeczywiscie tak sie nazywa przycisk (u ciebie byl to btnWykonaj, czy nie
walnales gdzies literowki).
tylko taka uwaga:
Rozwiazanie wskazane przez kolege jest o tyle lepsze, ze jesli masz wszystko
OK, VBA powinien podpowiedziec ci wlasnosci i funkcje obiektow - czyli
mozesz z listy wybrac ten wlasciwy. W twoim rozwiazaniu (lub tym
zmodyfikowanym powyzej) tych obiektow nie zobaczysz.
Pozdrawiam
Michal
Re: [VBA Excel 2003] jak się dostać do CommandButton
Author: Borafu
Date: Thu, 14 Jan 2010 08:49
Date: Thu, 14 Jan 2010 08:49
37 lines
2139 bytes
2139 bytes
Michal AKA Miki pisze:
>>>
>>> Po prostu napisz
>>>
>>> NazwaAkrusza.CommandButton1.Enabled = True
>> Niestety :-(
>>
>> Run-time error '424':
>> Object required
>
> To w takim razie zle napisales, bo normalnie to dziala.
> Zobacz w edytorze VBA wlasciwosci arkusza - ma on 2 wlasciwosci Name - jedna
> w nawiasach, a druga bez. Ta w nawiasach to nazwa kodowa i ja wlasnie
> uzywasz. Jesli chcesz uzywac nazwy na zakladce, mozesz uzywac cos na
> ksztalt:
> ThisWorkbook.Worksheets("Arkusz1").CommandButton1.Enabled = False
Dzięki za wyjaśnienie. To powyżej zadziałało, po użyciu właściwej nazwy.
> wg twojej analogii powinno to wygladac tak:
>
> Dim arkuszFZ As Worksheet
> Set arkuszFZ = ThisWorkbook.Worksheets("FZ")
> arkuszFZ.CommandButton1.Enabled = False
>
> Jesli znowu zwroci "Method or data member not found", zweryfikuj, czy
> rzeczywiscie tak sie nazywa przycisk (u ciebie byl to btnWykonaj, czy nie
> walnales gdzies literowki).
No, to dalej nie chce działać, ale pies trącał.
Nie zależy mi na tym rozwiązaniu. Później się pobawię w rozgryzanie
dlaczego.
Jeszcze raz dzięki za pomoc.
Pozdro
--
Borafu
Re: [VBA Excel 2003] jak się dostać do CommandButton
Author: Tajan
Date: Fri, 15 Jan 2010 10:22
Date: Fri, 15 Jan 2010 10:22
28 lines
2202 bytes
2202 bytes
Użytkownik "Michal AKA Miki" <jakistammichal@z.onetu.pl> napisał w
wiadomości news:hilmu5$of7$1@inews.gazeta.pl...
>
> Użytkownik "Borafu" <borafu_NIELUBIESPAMU@gazeta.pl> napisał w wiadomości
> news:hilfvn$1lk$1@inews.gazeta.pl...
(...)
> Oczywiscie wszystko musisz dokladnie sprawdzic - jak sie nazywa twoj
> CommandButton, jak sie nazywa arkusz (wg nazwy kodowej albo na zakladce w
> zaleznosci od wersji).
> wg twojej analogii powinno to wygladac tak:
>
> Dim arkuszFZ As Worksheet
> Set arkuszFZ = ThisWorkbook.Worksheets("FZ")
> arkuszFZ.CommandButton1.Enabled = False
>
To nie zadziała, gdyż klasa Worksheet faktycznie nie posiada własciwości
"CommandButton1".
Zawiera go dopiero instancja tej klasy, czyli obiekt arkusza "FZ".
Kompilator sprawdza właściwościi metody danej klasy a nie obiektu arkusza,
więc zgłasza błąd.
Obejściem jest zadeklarowanie zmiennej jako ogólnego typu obiektowego:
Dim arkuszFZ As Object
Tajan
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads