Strona 1 z 1
Zmiana koloru przycisku po każdym kliknieciu
: pn kwie 25, 2022 1:35 pm
autor: MichalElo
Dzień dobry,
Potrzebuję makro przypisane do przycisku które będzie uruchamiane po naciśnięciu przycisku a rezeltatem będzie zmiana koloru przycisku. Jeden z przycisków będzie mógł zmienić się na 1 z 5 kolorów inny na 1 z 2 itp konfigurację. Po każdym naciśnięciu przycisku następuje zmiana koloru na wybrany przeze mnie oczywiscie.
Ogólnie stworzyłem arkusz z użyciem formantów te formanty chciałbym zamienić na przyciski zmieniające kolory po każdym kliknieciu aby arkusz był bardziej widoczny i zrozumiały. Taki dokument z wybranymi kolorami chciałbym zapisać aby inna osoba mogła go przeanalizowac.
Re: Zmiana koloru przycisku po każdym kliknieciu
: pn kwie 25, 2022 6:56 pm
autor: Rafkus
Jakoś nie umiem sobie wyobrazić, żeby kolor przycisku wpływał na czytelność arkusza...
No ale, tak na zachętę masz funkcję zmieniającą w kolor przycisku arkuszu Calc
Kod: Zaznacz cały
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
print "kolor niebieski"
oObj2.BackgroundColor= RGB(0, 0, 255)
print "kolor zielony"
oObj2.BackgroundColor= RGB(0, 255, 0)
print "kolor czerwony"
oObj2.BackgroundColor= RGB(255, 0, 0)
End Sub
Powyższe makro przypisz do przycisku o nazwie "Przycisk 1", znajdującego się w Arkuszu1. Po uruchomieniu dany przycisk zmieni kolor na niebieski ---> zielony ---> czerwony.
Re: Zmiana koloru przycisku po każdym kliknieciu
: wt kwie 26, 2022 12:17 pm
autor: MichalElo
Dziękuję działa tylko nie do końca tak jakbym oczekiwał. Tzn potrzebuje żeby po każdym kliknieciu zmieniał się jeden kolor tutaj zmieniają się po jednym kliknięciu wszystkie kolory.
Wciskam przycisk - kolor niebieski, wciskam przycisk - kolor czerwony, wciskam przycisk - kolor biały
Re: Zmiana koloru przycisku po każdym kliknieciu
: wt kwie 26, 2022 1:50 pm
autor: Jermor
To zmodyfikuj makro np. tak:
Kod: Zaznacz cały
REM ***** BASIC *****
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
Dim kolory as long
niebieski=255 : Czerwony=65280 : zielony=16711680
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
kolory= oObj2.BackGroundColor
if kolory=niebieski then
kolory=czerwony
elseif kolory=czerwony then
kolory=zielony
else
kolory=niebieski
end if
oObj2.BackgroundColor= kolory
End Sub
Re: Zmiana koloru przycisku po każdym kliknieciu
: wt kwie 26, 2022 2:54 pm
autor: Rafkus
Dla dowolnej liczby kolorów proponuje takie rozwiązanie:
Kod: Zaznacz cały
global barwa() as long
sub _UstawKolory
Redim barwa (5)
barwa(0) = RGB(255, 255, 255) 'biały
barwa(1) = RGB(0, 0, 255) 'niebieski
barwa(2) = RGB(0, 255, 0) 'zielony
barwa(3) = RGB(255, 0, 0) 'czerwony
barwa(4) = RGB(255, 255, 0) 'żółty
barwa(5) = RGB(255, 0, 255) 'różowy?
end sub
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
dim WybranyKolor as Long
dim i as integer
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
if UBound(barwa) = -1 then _UstawKolory
WybranyKolor = oObj2.BackgroundColor
i=0
Do While i<UBound(barwa) and WybranyKolor<>barwa(i)
i=i+1
Loop
if i < UBound(barwa) then i=i+1 else i=0
oObj2.BackgroundColor = barwa(i)
End Sub
Re: Zmiana koloru przycisku po każdym kliknieciu
: czw maja 12, 2022 8:35 am
autor: MichalElo
Dziękuję za odpowiedzi, niestety dopiero wczoraj się za to wzialem. Korzystałem z obydwu sposobów i nadal mam problem z poprawnym ustawieniem tzn. wszystko jest dobrze jeśli wybranymi kolorami są np: niebieski, czerwony, żółty. Ale jeśli do tych kolorów dorzucę kolor biały lub domyślny przycisku czyli szary pojawia się problem (w domyśle biały lub szary oznaczają brak wyboru). Jeśli dodam kolor biały czyli jest: niebieski, czerwony, zielony, żółty i biały to zamiast białego wyświetla się szary - dopiero po kliknięciu komórki obok zmienia się na biały. To samo jest z szarym zamiast szarego pojawia się biały a kliknięcie komórki innej lub odświeżenie zmienia go na szary
Re: Zmiana koloru przycisku po każdym kliknieciu
: czw maja 12, 2022 8:46 am
autor: Rafkus
Możesz dołączyć do postu swój plik? Bez niego jakoś trudno mi stwierdzić co jest nie tak...
Re: Zmiana koloru przycisku po każdym kliknieciu
: czw maja 12, 2022 9:13 am
autor: MichalElo
Jeśli miałoby to pomoc to oczywiście ale będę musiał to jakoś przerobić ten plik bo nie chciałbym takiego jak jest udostępniać
także nie teraz. A faktycznie jest tak jak napisałem. Wydaje się jakby było to związane z zaznaczeniem przycisku w momencie kliknięcia. Teraz wyłączyłem np fokus po kliknięciu kolor to niebieski zielony i biały. Efekt jest taki że wszystkie kolory są okej i się trzymają ale zamiast białego mam szary dopiero odświeżenie arkusza zmianie na biały ehh