Witajcie mam takie pytanko, siedzę nad tym i siedzę wydaję mi się że to nic strasznego ale nie mam pojęcia już jak to zrobić mianowicie, kolory tej flagi mają być w Proporcji 13 coś takiego:
tylko problem jest w tym że moje makro działa tylko i wyłacznie w wypadku gdy liczba wierszy ma określony rozmiar np. 6 (gdy jest mniejszy zaczyna się psuć) również w przypadku gdy dam większy rozmiar ostatni kolor (niebieski) robi się za duży a powinien (z tego co rozumiem) mieć rozmiar błękitnego + zielonego, tak więc nie wiem za bardzo jakie ograniczenie mu dać.
Dim zakres As Range
Dim lw As Integer, lk As Integer
Set zakres = Application.InputBox("Zaznacz obszar", "Flaga", Type:=8)
zakres.Select
lw = zakres.Rows.Count
lk = zakres.Columns.Count
Range(zakres(1, 1), zakres(lw, lk)).Interior.Color = vbCyan
Range(zakres(lw / 6 + 1, 1), zakres(lw / 2, lk)).Interior.Color = vbGreen
Range(zakres(lw / 2 + 1, 1), zakres(lw, lk)).Interior.Color = vbBlue
@Edit
nie wiem tez dlaczego taki odstęp się robi ;/
Dokładnie o co chodzi to żeby rysował tylko wielokrotność liczby 6 tzn. jeżeli zaznaczyłem 14 wierszy to ma kolorować tylko 12 (o to chyba chodzi)
Potrzebował bym też makra do usunięcia tej flagi po jej narysowaniu.
Private Sub CommandButton1_Click()
Dim zakres As Range
Dim lw As Integer, lk As Integer
Dim kolor1 As Long, kolor2 As Long, kolor3 As Long
If Application.Dialogs(xlDialogEditColor).Show(40) = True Then
kolor1 = ActiveWorkbook.Colors(40)
End If
If Application.Dialogs(xlDialogEditColor).Show(40) = True Then
kolor2 = ActiveWorkbook.Colors(40)
End If
If Application.Dialogs(xlDialogEditColor).Show(40) = True Then
kolor3 = ActiveWorkbook.Colors(40)
End If
Set zakres = Application.InputBox("Zaznacz obszar", "Flaga", Type:=8)
zakres.Select
lw = zakres.Rows.Count
lk = zakres.Columns.Count
If lw Mod lw <> 6 = 1 Then
For i = 0 To 5 Step 1
Next
lw = lw - i
End If
Range(zakres(1, 1), zakres(lw / 6, lk)).Interior.Color = kolor1
Range(zakres(lw / 6 + 1, 1), zakres(lw / 2, lk)).Interior.Color = kolor2
Range(zakres(lw / 2 + 1, 1), zakres(lw, lk)).Interior.Color = kolor3
End Sub
Private Sub CommandButton2_Click()
Dim kom As Range
Dim lw As Integer, lk As Integer
For Each kom In zakres
lw = zakres.Rows.Count
lk = zakres.Columns.Count
Range(zakres(1, 1), zakres(lw, lk)).Clear
Next
End Sub
@Edit 2
If lw Mod 6 = 1 Then
lw = lw - 1
ElseIf lw Mod 6 = 2 Then lw = lw - 2
ElseIf lw Mod 6 = 3 Then lw = lw - 3
ElseIf lw Mod 6 = 4 Then lw = lw - 4
Tak rozwiązałem problem zaokrąglenia do wielokrotnosci 6 :) nie wiem czy poprawnie ale działa ! (chyba)
Potrzebował bym jeszcze makra które przypisane było by do 2giego commandbuttona i usuwało by poprzednio zaznaczony zakres ( chodzi o usuniecie koloru z zakresu który przed chwilą zaznaczyliśmy)
Jeśli mógłby ktoś pomóc to byłbym wdzięczny !