Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[vba][excel] Przepisywanie koloru tła komórki

jakobs84 05 Feb 2010 15:52 14073 5
  • #1
    jakobs84
    Level 12  
    Witam

    Poszukuje skryptu VBA który przepisze mi kolor tła z określonego zakresu komórek automatycznie (ja zmieniam w jednym arkuszu on automatycznie zmienia w innym).
    Pierwszy wariant:
    Powiedzmy zakres (=Arkusz1!A1:A12) zostanie odwzorowany do następnego arkusza na inny zakres (=Arkusz2!B1:B12). Po prostu odwzorować kolorowanie komórek.

    Drugi wariant
    Skrypt odczytywał by wartość liczbowe z zakresu (=Arkusz1!A1:A12) i jeśli znalazł by np. 1,5,12 to pokolorował by w zakresie (=Arkusz2!B1:B12) komórki B1,B5,B12 na określony kolor.

    W VBA jestem zielony, nie wiem co łatwiej wykonać. Chyba że da się to zrobić za pomocą jakiejś funkcji, formatowanie warunkowe raczej nie wchodzi w grę.

    Pozdrawiam
    [28-30.06.2022, targi] PowerUP EXPO 2022 - zasilanie w elektronice. Zarejestruj się za darmo
  • #2
    mrslawcio
    Level 12  
    W excelu jest taka funkcja w
    Narzędzie>Makra>Rejestruj nowe makro

    Jak użyjesz tej funkcji, będziesz mógł zmienić sobie kolor tła ręcznie a następnie w zarejestrowanym makrze zobaczyć jak to wykonać za pomocą makra, podobnie też z innymi rzeczami.

    Pozdrawiam
    Sławek
  • #3
    jakobs84
    Level 12  
    Jest to jakiś punkt zaczepienia, pojawił mi się kod VBA, ale nie działa to do końca tak jak bym chciał. Wracam do googlowania może ktoś ma inne wskazówki.
  • #4
    pawelwx
    Level 13  
    Ja używam funkcji

    Cells(roobl, coobl).Interior.Color = RGB(255, 255, 255)

    Odpowiednio przepisana powinna być OK
    Pomogłem? :)
  • #5
    jakobs84
    Level 12  
    Witam

    Chodziło mi mniej więcej o coś takiego, wariant 2:
    Code:

    Sub Przykład1()
     Dim zakres As Range
     Dim i As Integer
     Set zakres = Range("L14:L24")
     
     For wiersz = 3 To 21
       For kolumna = 3 To 7
       Cells(wiersz, kolumna).Interior.ColorIndex = 0
       Next kolumna
     Next wiersz
     
     For Each kom In zakres.Cells
        For i = 1 To 19
        If Cells(13 + i, 10).Value <> "c" Then
          If kom.Value = i Then
            If i <= 8 Then
              For kolumna = 3 To 7
              Cells(i + 2, kolumna).Interior.ColorIndex = 15
              Next
            Else
              If i >= 9 Then
                For kolumna = 3 To 7
                Cells(i + 5, kolumna).Interior.ColorIndex = 15
                Next
              End If
            End If
          End If
        End If
        Next
     Next
    End Sub



    Podejrzewam że jest tu kilka byków, ale działa liczyłem że zajmie mi to mniej czasu.

    Pytanie jak zrobić by był to automat, po wpisaniu czegoś do zakresu komórek?? Coś jak w "zdarzenie onChange" zacznie się kolorowanie??
  • #6
    adamas_nt
    Moderator of Programming
    Wklej w kod arkusza (nie do modułu)
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If Not Intersect(Target, Range("L14:L24")) Is Nothing Then
      Call Przykład1
    End If
    End Sub
    Jeśli zmieni się coś w zakresie L14:L24, uruchomiona zostanie procedura Przykład1.