Discussion:
EXCEL - licznik kliknięć przycisku.
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
SAPERR3
2006-03-13 18:54:51 UTC
Permalink
Witam,
Mam makro, które nazywa się 'Licznik kliknięć'. Makro miało zliczać ilość
kliknięć na przycisku w przygotowanym formularzu tzn. naciskam 'PRZYCISK A'
to w komórce 'A1' pojawia się 1, klikam drugi raz 'A' to robi się 2 itd.
Potrzebowałem 20 takich liczących przycisków. Dostałem taki kod:

Private Sub CommandButton10_Click()
If IsNumeric(Range("B13").Value) = True Then
Range("B13").Value = Range("B13").Value + 1
End If
End Sub

Skopiowałem go 20 razy, przypisałem liczenie kliknięć do poszczególnych
komórek i działało OK. Formularz wyglądał tak:

LICZNIK KLIKNIĘĆ
-------------------------------------------------------
PRZYCISK 1 PRZYCISK 5

PRZYCISK 2 PRZYCISK 6

PRZYCISK 3 PRZYCISK 7

PRZYCISK 4 PRZYCISK 8 itd.
--------------------------------------------------------
Klikając przycisk zwiększała się wartość w przypisanej komórce.

Teraz też potrzebuję liczących przycisków, ale chcę żeby teraz formularz
wyglądał tak:

LICZNIK KLIKNIĘĆ
----------------------------------------------------------------
1.x 2.x 3.x 4.x

PRZYCISK A

PRZYCISK B

PRZYCISK C

PRZYCISK D
----------------------------------------------------------------

Kliknięcie ma się zapisywać w zależności od tego, która z cyfr u góry
jest 'zaznaczona' (to 'x' przy cyfrze oznacza zaznaczenie) tzn. jeżeli
zaznaczona 2 to 'PRZYCISK A' dodaje kliknięcia do komórki B1, 'PRZYCISK B'
dodaje do B2; zaznaczona 4 to 'PRZYCISK A' dodaje kliknięcie do komórki D1
itd.
Najlepiej byłoby, gdyby można jakoś zmodyfikować to co już mam. Jeśli jednak
tak nie da rady to proszę o inne rozwiązania.

Pozdrawiam
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Tajan
2006-03-13 22:00:21 UTC
Permalink
Witam!

(...)
Teraz te¿ potrzebujê licz±cych przycisków, ale chcê ¿eby teraz
LICZNIK KLIKNIÊÆ
----------------------------------------------------------------
1.x 2.x 3.x 4.x
PRZYCISK A
PRZYCISK B
PRZYCISK C
PRZYCISK D
----------------------------------------------------------------
Klikniêcie ma siê zapisywaæ w zale¿no¶ci od tego, która z cyfr u góry
jest 'zaznaczona' (to 'x' przy cyfrze oznacza zaznaczenie) tzn. je¿eli
zaznaczona 2 to 'PRZYCISK A' dodaje klikniêcia do komórki B1,
'PRZYCISK B' dodaje do B2; zaznaczona 4 to 'PRZYCISK A' dodaje
klikniêcie do komórki D1 itd.
Najlepiej by³oby, gdyby mo¿na jako¶ zmodyfikowaæ to co ju¿ mam. Je¶li
jednak tak nie da rady to proszê o inne rozwi±zania.
Zak³adaj±c, ¿e zaznaczanie cyfr bedzie realizowane przy pomocy przycisków
opcji (RadioButton), proponujê nastêpuj±ce rozwi±zanie:
Na pocz±tku modu³u formularza zdefiniuj zmienn±, której warto¶æ bêdzie
odpowiada³a numerowi kolumny komórki docelowej, czyli:

Dim kolumna As Integer

Warto¶ci± tej zmiennej bêdziesz sterowa³ przy pomocy Radiobutton'ów.
Przyk³adowo, zaznaczenie pierwszego przycisku opcji bêdzie oznacza³o zapis
do kolumny A, czyli zmienna kolumna powinna przyj±æ warto¶æ 1.
W tym celu oprogramowujesz przyciski opcji w nastêpuj±cy sposób:

Private Sub OptionButton1_Click()
kolumna = 1
End Sub

Drugi i nastêpne przyciski oprogramowujesz identycznie, zmieniaj±c jedynie
numer kolumny przypisywany do zmiennej.

Dla skrócenia kodu proponujê utworzenie jednej, uniwersalnej procedury,
która bêdzie uruchamiana przez wszystkie przyciski polecenia
(CommandButton), w celu przypisania warto¶ci do odpowiedniej komórki. Kod
takiej procedury mo¿e wygl±daæ tak:

Sub ZwiekszLicznik(wiersz As Integer)
If kolumna = 0 Then Exit Sub
With Cells(wiersz, kolumna)
If IsNumeric(.Value) = True Then
.Value = .Value + 1
End If
End With
End Sub

Jak widaæ, do okre¶lenia kolumny w której znajduje siê komórka, procedura
korzysta ze zmiennej "kolumna". Natomiast numer wiersza powinien jej zostaæ
przekazany za pomoc± argumentu "wiersz".
Procedura jest uruchamiana po nacisnieciu jednego z przycisków "Przycisk A"
... "Przycisk D". Przyk³adowo, naci¶niêcie przycisku "Przycisk A" powinno
spowodowaæ zapisanie danych w wierszu 1, wiêc musimy numer tego wiersza
przekazaæ w argumencie przy wywo³aniu procedury:

Private Sub CommandButton1_Click()
ZwiekszLicznik 1
End Sub

dla przycisku "Przycisk B" bêdzie to przyk³adowo:

Private Sub CommandButton2_Click()
ZwiekszLicznik 2
End Sub

itd ....

My¶lê, ¿e opisa³em to w miarê jasno i dalej sobie z tym poradzisz.

Powodzenia
Tajan
--
Tadeusz Jankowski (MS Excel MVP)
SAPERR3
2006-03-14 11:38:17 UTC
Permalink
Witam,
WIELKIE DZIĘKI !!!!! Działa tak jak chciałem. Rozwiązanie zostało opisane
super. Prostą łopatologią zrozumiałą dla takiego laika jak ja :)))))

Pozdrawiam
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Loading...