Tło komórki

Range.Interior to właściwość obiektu Range, decydująca o formacie wypełnienia. 

kliknij, aby powiększyć

W dalszym rozwinięciu widać kolejne właściwości typu kolor, paleta, cieniowanie itp. 

klinij, aby powiększyć

Do ustawienia koloru najczęściej jest tu używana funkcja RGB

Przykładowy kod: 

Public Sub Koloruj()
Range(„E1:E10”).Interior.Color = RGB(0, 0, 255)
End Sub

Jeżeli chcemy usunąć kolor z zakresu komórek – lepiej nie stosować wypełnienia białym tłem (czyli kolorem RGB(255,255,255). W takim przypadku rzeczywiście znika kolor z komórek, ale białe wypełnienie zlewa się z sąsiednimi komórkami i optycznie znikają linie siatki arkusza. 

Zdecydowanie lepszym rozwiązaniem jest tu usunięcie wypełnienia takim kodem:

Public Sub Odkoloruj()
Range(„E1:E10”).Interior.Pattern = xlNone
End Sub

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

 

Funkcja VBA RGB

Funkcja RGB to jedna z funkcji wbudowanych VBA.  Zwraca wartość liczbową (liczba typu Long) będącą odzwierciedleniem odzwierciedleniem danego koloru jako mieszanki trzech kolorów podstawowych: czerwonego, zielonego i niebieskiego. 

kliknij, aby powiększyć

Funkcja ma 3 obowiązkowe argumenty:

    • Red – liczba typu Integer w zakresie 0 do 255
    • Green– liczba typu Integer w zakresie 0 do 255
    • Blue – liczba typu Integer w zakresie 0 do 255

Jeżeli któryś z argumentów funkcji będzie liczbą większą od 255 – kod zinterpretuje ją jako 255. Dla liczb całkowitych ujemnych – pojawi się
błąd wykonani 5. Jeżeli natomiast zostanie wstawiona wartość innego typu niż Integerbłąd wykonania 13

Za pomocą tej funkcji możemy ustawić własny kolor, na przykład przy formatowaniu czcionki czy zakresu. 
Skąd wiadomo jakie wartości wpisać jako poszczególne argumenty? Można podejrzeć w samym Excelu:

Karta Narzędzia główne:

Po wybraniu opcji Więcej kolorów otwiera się formularz:

W zakładce Niestandardowy ustawiamy wybrany kolor i odcień, a poniżej odczytujemy wartości R (czerwony), G(zielony) i B(niebieski). 
Możemy je wykorzystać w kodzie. 

Funkcja nie ma swojego odpowiednika w Excelu. 

Zdarzenie arkusza: przed kliknięciem prawym przyciskiem myszy

Worksheet_BeforeRightClick to jedno ze zdarzeń arkusza , automatycznie wykrywające kliknięcie prawym przyciskiem myszy w arkuszu. 

Ma 2 argumenty:

    • Target – typu Range.
      Komórka, która została dwukrotnie kliknięta;

    • Cancel  – typu Boolean
      dla wartości True – anulowana jest przypisana akcja,
      wartość domyślna to False.

Standardowo – po kliknięciu prawym przyciskiem myszy – wyświetlane jest menu podręczne:

Wykorzystując zdarzenie BeforeRightClick można jednak w danym arkuszu zmienić, usunąć niektóre przyciski, dodać własne (np.uruchamiające makro). 

Przykład procedury, który po kliknięciu prawym przyciskiem myszy nie wyświetla menu podręcznego,a jedynie komunikat:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox „Menu podręczne jest niedostępne.”
End Sub

Efekt wygląda tak:


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Zdarzenie arkusza: przed podwójnym kliknięciem

Worksheet_BeforeDoubleClick to jedno ze zdarzeń arkusza , automatycznie wykrywające dwukrotne kliknięcie w arkuszu. 

kliknij, aby powiększyć

Ma 2 argumenty:

    • Target – typu Range.
      Komórka, która została dwukrotnie kliknięta;

    • Cancel  – typu Boolean
      dla domyślnej wartości False – komórka jest w trybie edycji, kursor na pasku formuły,
      dla wartości
      True – komórka jest aktywna, ale nie w trybie edycji

Jeżeli komórka Target jest zablokowana i włączona jest ochrona arkusza, uruchomienie procedury z wartością Cancel=True wyświetli błąd Excela z informacją o włączonej ochronie (brak możliwości  przejścia do edycji komórki).
Niezależnie od wartości tego parametru – przy włączonej ochronie nie da się zmienić wartości i formatowania tej komórki. 

Przykład procedury, który po kliknięciu dwukrotnym w komórce, uruchamia jakąś procedurę Dwuklik z parametrem wejściowym będącym adresem komórki Target:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call Dwuklik(Target.Address)
Cancel = True
End Sub

 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

 

Funkcje informacyjne LBound i Ubound

Funkcje informacyjne VBA Lbound i Ubound to funkcje związane ze zmiennymi tablicowymi

LBound – zwraca dolny indeks tablicy

UBound – zwraca górny indeks tablicy

Obie funkcje są wykorzystywane najczęściej w pętli odczytującej poszczególne wartości tablicy. 

  • Na przykład:

    Public Sub NazwaPlik()
    Dim FD As FileDialog
    Dim NazwaPlik As String
    Dim i As Integer
    Dim JTab()
    Set FD = Application.FileDialog(msoFileDialogFilePicker)
    With FD
    .AllowMultiSelect = True
    .Filters.Clear
    .Filters.Add „Pliki Excel”, „*.xls*”
    .Filters.Add „Wszystkie pliki”, „*.*”
    .Title = „Wskaż pliki””
    NazwaPlik = „”
    If .Show Then
    For i = 1 To .SelectedItems.Count
    If i = 1 Then
    ReDim JTab(i)
    Else
    ReDim Preserve JTab(i)
    End If
    JTab(i) = .SelectedItems(i)
    Next i
    End If
    End With
    Set FD = Nothing
    Call OdczytajPliki(JTab)
    End Sub


    Public Sub OdczytajPliki(JTab)
    Dim i As Integer
    Dim JPlik As String
    For i = LBound(JTab) To UBound(JTab)
    JPlik = JTab(i)
    Debug.Print i & „: ” & JPlik
    Next i
    End Sub

    W przykładzie procedury do zmiennej tablicowej zapisywane są pliki wskazane w oknie FileDialog.Picker, a następnie odczytywane w pętli.