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