Mam dwie kolumny, jedna zawiera adresy innych komórek (na przykład $ F $ 2), druga zawiera numery indeksu kolorów (na przykład 15).

Chcę pokolorować wskazaną komórkę (która znajduje się na innym arkuszu).

Sub Colour_World()
Dim Cell As Range
For Each Cell In Range("p2:p3907") 'column with cell values

Worksheets("World").Range(Range(Cell).Value).Interior.ColorIndex = Cell.Offset(0, 5).Value

End Sub
0
user12670699 3 kwiecień 2020, 22:33

3 odpowiedzi

Najlepsza odpowiedź

Ponieważ zmienna Cell w For Each zwróci ciąg w range("p2:p3907"), a kiedy odwołujemy się do zakresu, po prostu użyj tylko Range("string refer to cell"). Więc usuń jeden zakres z kodu i będzie tak, jak potrzebujesz. Zobacz kod poniżej.

Sub Colour_World()
Dim Cell As Range

For Each Cell In Range("p2:p3907") 'column with cell values
    Worksheets("World").Range(Cell).Interior.ColorIndex = Cell.Offset(0, 5).Value
Next
End Sub
0
Adisak Anusornsrirung 4 kwiecień 2020, 03:06
Sub mySub()
    Dim colorCodeRange As Range 'Cell is a keyword so you don't want to try to use it as a variable name.
    Dim outputCell As String
    Dim colorCode As Byte

    Set colorCodeRange = Sheets(1).Range("P2:P10")

    For Each Cell In colorCodeRange.Cells 'either define the range and use it here or don't define the range object and type in a hard-coded range here.
                                          'you were defining the range then not using it, which is pointless.

        outputCell = Cell.Value2 'get the output cell from the color code sheet
        colorCode = Cell.Offset(0, 5).Value 'get the color code
        Sheets("World").Range(outputCell).Interior.ColorIndex = colorCode 'output the color to the "World" sheet

    Next Cell 'be sure to end the loop with "Next Cell" or at least "Next"
End Sub

Ten Sub otrzyma komórki wyjściowe (F2, F3 itp.) Z zakresu P2: P10. Te wartości znajdują się w arkuszu 1. Kody kolorów znajdują się w tym samym wierszu, 5 kolumn po prawej stronie (kolumna U). Kolory wypełnienia są przesyłane do arkusza „World” w komórce określonej w zmiennej colorCodeRange („P2: P10”).

Sheet 1

Sheet 2

0
SendETHToThisAddress 4 kwiecień 2020, 00:53
Sub Colour_World()
Dim Cell As Range
For Each Cell In Range("p2:p10") 'column with cell values

Worksheets("World").Range(Cell.Value).Interior.ColorIndex = Cell.Offset(0, 5).Value


Next Cell
End Sub
0
Matthew Keracher 3 kwiecień 2020, 20:02