/ / Jak kolorować określone zakresy komórek w zależności od liczby użytych wierszy w Excel VBA - excel, vba, excel-vba

Jak kolorować określone zakresy komórek w zależności od liczby używanych wierszy w Excel VBA - excel, vba, excel-vba

Przepraszam, jeśli wcześniej otrzymałem odpowiedź, ale nie miałem szczęścia w znalezieniu realnego rozwiązania mojego dylematu.

Próbuję naprawić / ulepszyć jedno z narzędziużywamy poprzez kolorowanie różnych zakresów różnych kolorów, ale tylko wiersze używane przez dane, które są wypełniane. Udało mi się znaleźć rozwiązanie, które działa, ale z jakiegoś powodu koloruje o wiele więcej wierszy, niż tego chcę. Jeśli zapełniam tylko kilka wierszy, koloruje on ponad 80 wierszy. Im więcej wierszy używam, tym więcej wierszy się koloruje i nie miałem szczęścia dowiedzieć się, dlaczego.

Narzędzie wypełnia kolumny A-AS i rozpoczyna się w wierszu 9. Jest zapełniane danymi z innej karty. Moje testy okazały się nieskuteczne. Oto, jak wygląda to narzędzie:

Konstruktor cytatów:

Konstruktor cytatów

Oto fragment kodu, nad którym pracuję:

    " Color used range of cells
Sheet1.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G9" & LastRowNo).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M9" & LastRowNo).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI9" & LastRowNo).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS9" & LastRowNo).Interior.ColorIndex = 17

Daj mi znać, jeśli potrzebujesz więcej informacji, starałem się być tak szczegółowy, jak tylko mogłem.

Aby wyjaśnić wszystkim, którzy próbują pomócten przypadek. Powyższy kod działa z tym wyjątkiem, że koloruje więcej wierszy niż potrzebuję znacznej ilości. Potrzebuję go tylko do pokolorowania użytych rzędów, począwszy od wiersza 9, aż do liczby wierszy wypełnianych przez użytkownika. Może to być zaledwie 1 linia do ponad 200 linii. Zasadniczo, użytkownik potrzebuje wielu linii. Dziękuję wszystkim z góry.

Oto zmiany, które stworzyłem, które są dużo bliższe temu, czego potrzebuję, ale wciąż nie do końca:

    " Color used range of cells
Sheet1.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G1" & LastRowNo).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M1" & LastRowNo).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI1" & LastRowNo).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS1" & LastRowNo).Interior.ColorIndex = 17

Odpowiedzi:

0 dla odpowiedzi № 1

W porządku, udało mi się wymyślić rozwiązaniedziała w mojej sytuacji. Musiałem dodać instrukcję If, ponieważ nie byłoby koloru pierwszego wiersza, gdyby był tylko jeden wiersz danych, teraz działa dokładnie tak, jak chciałem.

Oto kod, którego użyłem:

" Color used range of cells
If LastRowNo = 2 Then
Sheet1.Range("A9:G9").Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G9").Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M9").Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M9").Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI9").Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI9").Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS9").Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS9").Interior.ColorIndex = 17
Else
Sheet1.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204)
Sheet2.Range("A9:G" & LastRowNo + 7).Interior.Color = RGB(255, 242, 204)

Sheet1.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214)
Sheet2.Range("H9:M" & LastRowNo + 7).Interior.Color = RGB(252, 228, 214)

Sheet1.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218)
Sheet2.Range("N9:AI" & LastRowNo + 7).Interior.Color = RGB(226, 239, 218)

Sheet1.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17
Sheet2.Range("AJ9:AS" & LastRowNo + 7).Interior.ColorIndex = 17
End If

Jeśli to pomoże każdemu, to wartowysiłek. Jeśli istnieją inne rozwiązania lub lepszy sposób na zrobienie tego, dodaj swoje informacje. Często odwiedzam tę stronę, aby znaleźć rozwiązania problemów i znaleźć ją jako jedną z najbardziej korzystnych witryn w okolicy. Dzięki tym, którzy wnieśli swój wkład w to, było to pomocne.