Как создать макрос Excel, который изменяет строки, охватываемые ячейкой - PullRequest
0 голосов
/ 01 декабря 2009

Я вставляю таблицу в Excel из SAS, где число строк, охватываемых ячейкой в ​​первом столбце, является переменным. То есть иногда первый столбец состоит из 3 объединенных ячеек, иногда это 6 и т. Д. Я хотел бы запустить макрос, который изменяет высоту первой ячейки на 10 объединенных ячеек, и вставить строки внизу, чтобы сделать место для этого.

Я немного озадачен тем, как подойти к этой проблеме. Любая помощь будет наиболее ценной.

Позвольте мне попытаться проиллюстрировать. Если бы я хотел, чтобы первый столбец занимал все 4 строки, я мог бы начать с

_________________
      |__________
______|__________
      |__________
      |__________
______|__________

и в итоге

_________________
      |__________
      |__________
      |__________
______|__________
      |__________
      |__________
      |__________
______|__________

Ответы [ 2 ]

1 голос
/ 01 декабря 2009

Что бы вы ни пытались сделать, вы можете выбрать Tools -> Macro -> Record new macro, затем вручную выполнить необходимую операцию, затем остановить макрос и отредактировать его в VBA, чтобы увидеть соответствующие команды VBA для использования в вашей программе.

1 голос
/ 01 декабря 2009

Спасибо за ваше объяснение. Вы только что сделали это über жестким. Проблема в том, что, хотя кажется, что вы просто изменяете высоту вашей объединенной ячейки, чтобы увеличить ее, вы фактически создаете новое объединение, чтобы сделать новые объединенные ячейки высотой 4 ячейки.

На первом рисунке показаны две объединенные ячейки с диапазонами адресов A1:A2 и A3:A6. На втором рисунке адреса A1:A4 и A5:A8 соответственно.

Чтобы Excel «изменил высоту» (я свободно использую эту фразу) исходных объединенных ячеек по адресу A1:A2, ему фактически необходимо создать новую настройку объединенных ячеек в диапазоне адресов A1:A4. Однако вы не сможете этого сделать, поскольку адрес A3:A6 уже является объединенным диапазоном, и они будут перекрываться.

Если бы вы попытались сделать это вручную, вы знаете, что вам нужно было бы объединить нижнюю группу, заново объединить верхнюю группу и вновь объединить нижнюю группу.

Вы могли бы написать макрос, который при запуске выскочил в поле ввода, в котором спрашивалось, какое количество ячеек должно быть выше, чем должна быть объединенная ячейка. Тем не менее, ваш код должен будет проанализировать ваш первоначальный стек объединенных ячеек, а затем распаковать и заново объединить все программно, чтобы внести изменения. Это, конечно, возможно, но это может быть настоящей болью (но также и забавным испытанием :).

Я бы спросил себя, насколько сильно вы хотите иметь возможность именно то, что вы ищете, потому что это не совсем естественное поведение в Excel.


Мой оригинальный пост ниже: теперь устарел, так как теперь я понимаю, о чем просит автор

Если вы просто хотите изменить высоту ячеек, вы можете использовать что-то вроде:

    Rows("1:1").RowHeight = 27.75

Однако меня смущает ваша ссылка на объединенные ячейки. Вы просто пытаетесь изменить высоту ячейки или также пытаетесь объединить ячейки вместе?

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