Vba I rysowanie krzyża

0

Witam. Nie mogę sobie poradzić z pewną procedurą VBA i szukam pomocy. Jestem początkujący także nie bardzo wiem co mogę zrobić.
Oto treść:

Napisać procedurę która w zaznaczonym przez użytkownika obszarze komórek arkusza maluje krzyż. Liczba wierszy oraz liczba kolumn zaznaczonego obszaru powinna być nieparzysta. Obszar powinien być pomalowany na inny kolor.

Na chwilę obecną mam to:

Sub krzyz()
  Dim obszar As Range

  Set obszar = Selection
  obszar.Interior.Color = vbYellow

  pw = obszar.Row
  pk = obszar.Column
  Range(Cells(pw - 3, pk), Cells(pw + 3, pk)).Interior.Color = vbBlack
  Range(Cells(pw, pk - 3), Cells(pw, pk + 3)).Interior.Color = vbBlack
End Sub

Maluje mi to zaznaczony obszar na żółto a krzyż na czarno jednak krzyż ma być po środku, a u mnie tylko zachodzi na pomalowany obszar. To ustawienie gdzie ma być krzyż skopiowałem z innego zadania gdzie po prostu maluje krzyż o stałym rozmiarze. I tutaj pytanie. Jak zmienić kawałek kodu:

Range(Cells(pw - 3, pk), Cells(pw + 3, pk)).Interior.Color = vbBlack
Range(Cells(pw, pk - 3), Cells(pw, pk + 3)).Interior.Color = vbBlack

, aby krzyż był malowany po środku zaznaczonego obszaru?

Z góry dziękuję za pomoc!
Przemek.

0

To moje pierwsze kroki w VB więc pewnie da się to zrobić lepiej, ale rezultat prawie osiągnięty. Krzyż się rysuje niepoprawnie dla obszarów gdzie x lub y są parzyste, ale to już na pewno sam sobie z tym poradzisz ;)

Sub krzyz()
  Dim obszar As Range
  Dim szerokosc As Integer
  Dim wysokosc As Integer
  Dim mk As Integer
  Dim mw As Integer
  
  Set obszar = Selection
  obszar.Interior.Color = vbYellow
  
  szerokosc = obszar.Columns.Count
  wysokosc = obszar.Rows.Count
  
  mk = (szerokosc \ 2)
  mw = (wysokosc \ 2)
    
  pk = obszar.Column + mk
  pw = obszar.Row + mw
  
  
  Range(Cells(pw - mw, pk), Cells(pw + mw, pk)).Interior.Color = vbBlack
  Range(Cells(pw, pk - mk), Cells(pw, pk + mk)).Interior.Color = vbBlack
End Sub

1 użytkowników online, w tym zalogowanych: 0, gości: 1