🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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
#104432
Author: Borafu
Date: Wed, 13 Jan 2010 14:37
33 lines
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
#104433
Author: janusz
Date: Wed, 13 Jan 2010 18:10
7 lines
1230 bytes
Witam

Po prostu napisz

NazwaAkrusza.CommandButton1.Enabled = True

Janusz
Re: [VBA Excel 2003] jak się dostać do CommandButton
#104434
Author: Borafu
Date: Wed, 13 Jan 2010 22:03
16 lines
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
#104435
Author: Michal AKA Miki
Date: Thu, 14 Jan 2010 00:02
44 lines
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
#104436
Author: Borafu
Date: Thu, 14 Jan 2010 08:49
37 lines
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
#104437
Author: Tajan
Date: Fri, 15 Jan 2010 10:22
28 lines
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