|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.02.2009, 20:43 | #1 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Работа с объединенными ячейками
ALL: С ячейками можно работать используя cells(x,y), где x,y- координаты ячейки. При изменении координаты на единицу происходит перемещение на соседнюю ячейку.
В случай если работаем с объединенными ячейками для перемещения на следующую ячейку необходимо изменить координату на количество объединенных ячеек. Существует ли способ работы с объединенными ячейками, при котором для обращения к соседней ячейки изменять координаты x,y нужно так же на единицу?
С уважением, Алексей.
|
12.02.2009, 03:46 | #2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Проще пойти другим путём. Вы, скорее всего, для перебора ячеек используете что-то вроде этого: Код:
Попробуйте использовать такой вариант: Код:
|
|
12.02.2009, 22:01 | #3 |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
EducatedFool: Конечно можно было написать универсальную процедуру переключения/перехода/обращения и т.п. к ячейкам, которая одинаково работала бы и с обычными и с объединенными ячейками. Задача не очень сложная, нечто подобное раньше я уже делал. Но взвесив все еще раз я решил что это было бы лишнее. Объединение ячеек является чуждым элементом в экселе, реализованным крайне неудачно. Так что я решил остановиться на использовании векторов. Реализация в таблицах оказалась довольно удачной, единственный минус изменять вектора приходиться в ручную. Но это не сложно сделать и после написания таблиц думаю потребность в этом будет возникать не чаще чем 1-2 раза в год. С этим можно смериться.
Спасибо за наводку в нужном направлении.
С уважением, Алексей.
|
12.02.2009, 22:11 | #4 | ||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Цитата:
Очень часто работаю с объединёнными ячейками, и ни разу не замечал каких-либо недоработок... |
||
13.02.2009, 20:39 | #5 | |
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
На сколько я знаю их нету. :) Но организовать их не трудно. "Дело техники." (с)
Вот пример заполнения информации в таблице. Заполняем вторую и третью в строке объединенные ячейки. Код:
x_sh - Номер строки в шаблоне, на основе которой оформляем текущую строку в документе. смещение_уч - Смещение на начало нужного (текущего) участка, на листе участков. смещение_чс - Смещение на начало нужного (текущего) части, на листе частей. В таблице задействовано только 33 столбца (при ширине =2 и текущих полях столько умещается на А4). С 36 столбца начинается вектор для объединенных ячеек в текущей строки, в нем храним номера первых столбцов объединенных ячеек. В случае изменения объединения в текущей строке, подправляем вектор, а макрос править не нужно, он будет работать правильно. Да и строки кода получаются весьма универсальные. Цитата:
Если честно мне после rexx, и VBA и макросы в эксель кажется просто тихим ужасом. "Я фигею, дорогая редакция." (с) Все криво до нельзя, а читаемость листинга вообще практически на нуле. Но думаю, что это мало кого здесь интересует, а мне в любом случае придется работать с тем что есть.
С уважением, Алексей.
|
|
13.02.2009, 21:17 | #6 | ||||
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Пройдёт немного времени, и Вы поймёте, что Ваша задача элементарно решалась 10-ю строками кода без всяких векторов... и без огорода... Безусловно, можно умудриться так затолкать исходные данные в Excel, что макрос получится гигантским и плохо адаптируемым, но это уже проблема не VBA... Может, у Вас как раз такой случай? Цитата:
Цитата:
В остальном всё очень хорошо продумано. Встречаются, конечно, при работе и баги Excel, но находятся они так глубоко, что вряд ли Вы успели до них добраться... (за последний год работы с Excel всего 4 или 5 раз столкнулся с ними...) К тому же, почти все эти глюки документированы... Цитата:
Можно почти на любом языке программирования написать нечитаемый код... По поводу выравнивания - тут всё просто. Установите специальную надстройку для выравнивания кода - например, IndenterVBA. Найти её (и не только её) можно в этом сообщении.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 13.02.2009 в 21:28. |
||||
13.02.2009, 22:25 | #7 | ||||||
Форумчанин
Регистрация: 02.02.2009
Сообщений: 842
|
Цитата:
Вектора хороший метод, не заслужено "забытый" в современном мире. Одну и туже задачу всегда можно решить минимум двумя способами. В том числе и эту, но я пока его не нашел... а этот способ в общем устраивает. Цитата:
Цитата:
ИМХО это тема для спора, во многом это дело привычки. Цитата:
Цитата:
Если заменить "Все" на "Многое", готов подписаться под этим. Есть ряд вещей зависящие от идеологии языка, от синтаксиса написания команд и других особенностей языка. Цитата:
За ссылочки спасибо, посмотрим внимательно. Но выравнивать код предпочитаю в ручную. Есть такая дурная привычка.
С уважением, Алексей.
|
||||||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. | 0101 | Помощь студентам | 3 | 17.12.2009 23:57 |
delphi и excel работа с ячейками | Doget | Помощь студентам | 1 | 04.08.2008 08:13 |