Excel vba меняет цвет интерьера диапазона ячеек без использования петель - PullRequest
4 голосов
/ 17 февраля 2012

как заставить это работать?

Range(Cells(1,1),Cells(height,width)).Interior.Color=colorArray

colorArray - это одномерный массив длинных целых чисел длины (ширина * высота), содержащий значения цвета.

Приведенный выше код возвращает ошибку несоответствия типов.

For i = 1 to height
   For j = 1 to width
      t=(i-1)*width+j
      Cells(i,j).Interior.Color=colorArray(t)
   Next
Next

Этот код работает, но работает слишком медленно. Я не хочу использовать петли.

Range(Cells(1,1),Cells(height,width)).Value=colorArray

Этот код заполняет диапазон значениями цвета из colorArray без ошибок. Я хочу, чтобы подобный код изменил цвет фона ячеек этого диапазона.

Пожалуйста, помогите.

ReDim colorArray(1 To width*height) As Long

Пример кода Сиддхарта Раута:

Sub Sample()
    Dim colorArray(21) 'or Dim colorArray(21) As Long/Integer
    Dim Height As Long, Width As Long

    For i = 0 To 21
        colorArray(i) = i
    Next

    Height = 10
    Width = 2

    Range(Cells(1, 1), Cells(Height, Width)).Interior.Color = colorArray

End Sub

@ Siddharth Rout, я тестировал этот код, но он также возвращает ту же ошибку «Ошибка времени выполнения:« 13 »Несоответствие типов»

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Я верю, что проблема заключается в вашем звонке. Вы должны использовать:

Range(Cells(1, 1), Cells(Height, Width)).Interior.Color***Index*** = colorArray

Это мой опыт использования цветов фона ячейки в Excel VBA.

-Скотт

0 голосов
/ 17 февраля 2012

Приведенный выше код возвращает ошибку несоответствия типов.

Джон, как вы определили colorArray в коде? Это работает для меня.

Sub Sample()
    Dim colorArray(21) 'or Dim colorArray(21) As Long/Integer
    Dim Height As Long, Width As Long

    For i = 0 To 21
        colorArray(i) = i
    Next

    Height = 10
    Width = 2

    Range(Cells(1, 1), Cells(Height, Width)).Interior.Color = colorArray

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...