Ссылаясь на диапазон, который является значением ячейки - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть два столбца, один из которых содержит адреса других ячеек (например, $ F $ 2), а другой столбец содержит номера индекса цвета (например, 15). Я ищу макрос, который закрасит указанную ячейку (которая находится на другом листе).

Кто-нибудь может помочь? Редактировать: Вот что у меня есть ...

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

Ответы [ 3 ]

0 голосов
/ 04 апреля 2020
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

Этот Sub получит выходные ячейки (F2, F3 и т. Д. c.) Из диапазона P2: P10. Эти значения приведены на листе 1. Цветовые коды находятся в той же строке, на 5 столбцов справа (столбец U). Цвета заливки выводятся на лист «Мир» в ячейке, указанной в переменной colorCodeRange («P2: P10»).

Sheet 1

Sheet 2

0 голосов
/ 04 апреля 2020

Поскольку переменная Cell в For Each будет возвращать строку в range("p2:p3907"), а когда мы ссылаемся на диапазон, просто используйте Range("string refer to cell"). Итак, удалите один диапазон из вашего кода, и он будет таким, как вам нужно. Смотрите код ниже.

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 голосов
/ 03 апреля 2020
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...