Доброго времени суток, уважаемые форумчане. Не могу разобраться с проблемой , помогите, если можно. Итак, по ходу выполнения кода, переменная cell_close принимает значение типа "E62,E61,E13,E15,E7,E48,E10..." Таких адресов ячеек в реальном файле сейчас пару тысяч, а будет еще больше. Далее вышеперечисленные ячейки должны закраситься:
Код
Range(cell_close).Interior.Color = 255
НО тут и вылезает проблема. Когда тестил код, таких ячеек было с 10 и все работало правильно, а вот в реальном файле, код начинает ругаться: method range of object worksheet failed В прилагаемом файле переменная содержит 64 адреса и код не работает, стоит уменьшить до 61 и код срабатывает как надо. Я, так понял, превысил какое-то ограничение на кол-во адресов ячеек? Можно ли это как то обойти, если конечно дело в этом? В реальном файле, повторюсь, таких адресов будет несколько тысяч P.S. Заранее спасибо всем откликнувшимся
Private Sub CommandButton1_Click()
Dim s$, adr$, p&
s = "E62,E61,E13,E15,E7,E48,E10,E45,E3,E32,E42,E24,E40,E43,E18,E56,E28,E65,E57,E58,E72,E67,E81,E82,E75,E92,E98,E89,E77,E86,E97,E59,E53,E90,E63,E85,E79,E84,E91,E73,E69,E2,E6,E12,E96,E64,E68,E80,E99,E60,E8,E88,E71,E1397,E78,E76,E39,E66,E110,E108,E87,E104,E105,E103,E109,E112"
Do While Len(s) > 255
adr = Left(s, 255): p = InStrRev(adr, ",")
adr = Left(s, p - 1): s = Right(s, Len(s) - p)
Range(adr).Interior.Color = 255
Loop
Range(s).Interior.Color = 255
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Спасибо большое, Ігор Гончаренко. Ваш вариант оказался для меня более понятным. Варианты от Jack Famous наверно для более серьезных задач и таких же серьезных знаний VBA. Я тоже уже приступил к варианту с циклом, но Ваш код гораздо понятнее и лаконичней моей попытки Еще раз спасибо.