Здравствуйте. Я новичок как в использовании VBA, так и на самом форме. Извиняюсь, если где то выразился некорректно. Часть задачи, которую я пытаюсь решить заключается в следующих пунктах: 1) Пройтись по строкам, которые заполненные данными 2) При помощи условия if определить закрашена ли ячейка в желтый или синий цвета (Диапазон ячеек в строке закрашивается в желтый согласно номеру введённой строки, при помощи
Код
b = InputBox("Введите номер строки")
в синий, согласна некому условию. В совокупности желтая строка с набором синих строк является отобранным блоком данных (рис .1.). 3) При определении незакрашенной строки, начать выполнения макроса с отбора следующего блока данных, т.е. закрашивания строки в желтый и подбору к ней строк в соответствии с неким условием попутно закрашивая их в синий, но при этом избегая уже использованных данных. 4) Отобранный блок данных копируется на отдельную страницу, в то время как поиск блоком данных продолжается. Конкретно меня интересует, можно ли при помощи условия if отследить ячейки по цвету, т.е. пункт 2.
Благодарю за информацию, также прилагаю пример данной задачи, где мне необходимо добавить условие из пункта 2. [vba]
Код
Sub Ф1()
Dim b As Long, d As Long, _ N_nd As Long, _ N_ct1 As Long, N_ct2 As Long, N_ct3 As Long, N_ct4 As Long, _ Tg_ct1 As Long, Tg_ct2 As Long, Tg_ct3 As Long, Tg_ct4 As Long, _ Tvh_OK As Long, Pza_KVD As Long, _ LastRow2 As Long, LastRow1 As Long, f As Long, _ N_vd As Long
'строки' '1' b = InputBox("Введите номер строки") '2' d = 8
'определение последней заполненной ячеки'
f = Sheets("Ф1").UsedRange.Row + Sheets("Ф1").UsedRange.Rows.Count - 1
Здравствуйте. Я новичок как в использовании VBA, так и на самом форме. Извиняюсь, если где то выразился некорректно. Часть задачи, которую я пытаюсь решить заключается в следующих пунктах: 1) Пройтись по строкам, которые заполненные данными 2) При помощи условия if определить закрашена ли ячейка в желтый или синий цвета (Диапазон ячеек в строке закрашивается в желтый согласно номеру введённой строки, при помощи
Код
b = InputBox("Введите номер строки")
в синий, согласна некому условию. В совокупности желтая строка с набором синих строк является отобранным блоком данных (рис .1.). 3) При определении незакрашенной строки, начать выполнения макроса с отбора следующего блока данных, т.е. закрашивания строки в желтый и подбору к ней строк в соответствии с неким условием попутно закрашивая их в синий, но при этом избегая уже использованных данных. 4) Отобранный блок данных копируется на отдельную страницу, в то время как поиск блоком данных продолжается. Конкретно меня интересует, можно ли при помощи условия if отследить ячейки по цвету, т.е. пункт 2.
Благодарю за информацию, также прилагаю пример данной задачи, где мне необходимо добавить условие из пункта 2. [vba]
Код
Sub Ф1()
Dim b As Long, d As Long, _ N_nd As Long, _ N_ct1 As Long, N_ct2 As Long, N_ct3 As Long, N_ct4 As Long, _ Tg_ct1 As Long, Tg_ct2 As Long, Tg_ct3 As Long, Tg_ct4 As Long, _ Tvh_OK As Long, Pza_KVD As Long, _ LastRow2 As Long, LastRow1 As Long, f As Long, _ N_vd As Long
'строки' '1' b = InputBox("Введите номер строки") '2' d = 8
'определение последней заполненной ячеки'
f = Sheets("Ф1").UsedRange.Row + Sheets("Ф1").UsedRange.Rows.Count - 1
_Boroda_, Данный вариант не подошел, так как складывается впечатление, что [vba]
Код
If Cells(1, 1).Interior.Color = 65535 Then
[/vba] не проверяет условие закрашена ли ячейка в цвет "65535". Попробовал подставить в свой код, однако все ячейки просто закрашиваются в желтый, не зависимо от того были ли они закрашены ранее. [vba]
Код
Sub Ф1()
Dim b As Long, d As Long, _ N_nd As Long, _ N_ct1 As Long, N_ct2 As Long, N_ct3 As Long, N_ct4 As Long, _ Tg_ct1 As Long, Tg_ct2 As Long, Tg_ct3 As Long, Tg_ct4 As Long, _ Tvh_OK As Long, Pza_KVD As Long, _ LastRow2 As Long, LastRow1 As Long, f As Long, _ N_vd As Long
'строки' '1' b = InputBox("Введите номер строки") '2' d = 8
'смена цвета режимов от 1-56'
'определение последней заполненной ячеки'
f = Sheets("Ф1").UsedRange.Row + Sheets("Ф1").UsedRange.Rows.Count - 1
[/vba] Существует ли как нибудь другой способ отбросить использованные данные, чтобы продолжит отбор из оставшихся?
_Boroda_, Данный вариант не подошел, так как складывается впечатление, что [vba]
Код
If Cells(1, 1).Interior.Color = 65535 Then
[/vba] не проверяет условие закрашена ли ячейка в цвет "65535". Попробовал подставить в свой код, однако все ячейки просто закрашиваются в желтый, не зависимо от того были ли они закрашены ранее. [vba]
Код
Sub Ф1()
Dim b As Long, d As Long, _ N_nd As Long, _ N_ct1 As Long, N_ct2 As Long, N_ct3 As Long, N_ct4 As Long, _ Tg_ct1 As Long, Tg_ct2 As Long, Tg_ct3 As Long, Tg_ct4 As Long, _ Tvh_OK As Long, Pza_KVD As Long, _ LastRow2 As Long, LastRow1 As Long, f As Long, _ N_vd As Long
'строки' '1' b = InputBox("Введите номер строки") '2' d = 8
'смена цвета режимов от 1-56'
'определение последней заполненной ячеки'
f = Sheets("Ф1").UsedRange.Row + Sheets("Ф1").UsedRange.Rows.Count - 1
If Not Cells(b, 1).Interior.Color = 65535 Or Cells(b, 1).Interior.Color = 60000 Then
Ярко жёлто - синий пример, как делать НЕ надо. Если ячейка не желтая, то какая разница, или она зеленая, или она фиолетовая (в крапинку)? Условие уже выполнено.
If Not Cells(b, 1).Interior.Color = 65535 Or Cells(b, 1).Interior.Color = 60000 Then
Ярко жёлто - синий пример, как делать НЕ надо. Если ячейка не желтая, то какая разница, или она зеленая, или она фиолетовая (в крапинку)? Условие уже выполнено.RAN