0
breezee
11.12.15
✎
20:23
|
1) Нашел код для прохождения по всем строкам и колонкам. Почему количество строк и колонок поределяется для 1 строки и колонки? может где-то ошибка?
Лист = Книга.WorkSheets(1);
ВсегоКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
ВсегоСтрок = Лист.Cells(1,1).SpecialCells(11).Row;
Для Строка = 1 По ВсегоСтрок Цикл
Для Колонка = 1 По ВсегоКолонок Цикл
Значение = СокрЛП(Лист.Cells(Строка,Колонка).Value);
КонецЦикла;
КонецЦикла;
И почему там стоит(11)?
2) Можно ли как-то при обходе строки в екселе найти сдовенные(объединенные) колонки?
|
|
4
Vladal
11.12.15
✎
21:12
|
На одном форуме я увидел похожую тему. Не проверял, нет возможности.
Источник:
Существует ли способ работы с объединенными ячейками, при котором для обращения к соседней ячейки изменять координаты x,y нужно так же на единицу?
Реализовать такой способ можно, но возникнут проблемы с вычислением координат, если на листе будет много объединённых ячеек, каждая из которых содержит в себе ячейки нескольких строк и столбцов, - в этом случае при одних и тех же координатах (к примеру, MyCells(5,12)) будут возвращаться разные ячейки в зависимости от того, с чего начинаем подсчёт - со строк, или со столбцов.
Проще пойти другим путём.
Вы, скорее всего, для перебора ячеек используете что-то вроде этого:
Код:
Sub ОбработкаОбычныхЯчеек()
For x = 1 To 30
Cells(x, 1) = "Это ячейка " & x
Next
End Sub
Sub ОбработкаОбычныхЯчеек_вариант2()
x = 1
While x <= 30
Cells(x, 1) = "Это ячейка " & x
x = x + 1
Wend
End Sub
Попробуйте использовать такой вариант:
Код:
Sub ОбработкаОбъединённыхЯчеек()
x = 1: i = 1
While x <= 30
Cells(x, 1) = "Это ячейка " & i: i = i + 1
x = x + Cells(x, 1).MergeArea.Cells.Count
Wend
End Sub
|
|