Когда вы нажимаете CTRL + D в Excel 2007 или 2010 (и, возможно, более старых версиях), он делает точную копию ячейки над ней (конечно, изменяя ссылки на ячейки). При этом он копирует все остальное, например, форматирование шрифта, заливку и даже границы (тьфу). Если бы я мог просто скопировать значение / forumula и просто унаследовать форматирование текущей ячейки, это было бы здорово.
Обновление 2014/08/01
Я придумал этот удивительный макрос. Однако недостатком использования макроса является то, что вы теряете возможность отмены. Я знаю, что есть способ реализовать функцию отмены с помощью макроса, не создавая макрос отмены. Я делал это раньше в Excel. Есть способ сказать Excel, чтобы каким-то образом сохранить состояние книги, чтобы отмена фактически вернулась. Это еще один вопрос, который я, скорее всего, опубликую.
Sub CtrlD () Dim R As Range Set r = Выбор Application.Union (r, r.Offset (-1, 0)). FillDown End Sub
Если кто-то не знает более родного подхода к этому, тогда этот ответчик получит оценку.
источник
=A1+A2
чтобы изменять бытьA2+A3
, он копирует формулу дословно. Кроме того, перетаскивание маркера заливки с помощью мыши нарушает назначение сочетания клавиш. Я хотел бы иметь возможность нажать CTRL + [что угодно] и заставить его делать все, что делает CTRL + D, не копируя форматирование.Оказывается, вы можете сделать эквивалент этого с клавиатуры только нажатием следующих клавиш в последовательности: Alt, H, V, O, после копирования формулы вы хотите.
Это несколько громоздко, но вы можете использовать его как Ctrl+ D.
Это работает, потому что вы получаете «Вставить формулы и форматирование чисел», что я думаю, в основном то, что вы хотите. Границы и стили шрифта не переносятся.
Вероятно, есть способ поместить это как кнопку на ленте и назначить ей собственный ярлык.
источник
На ленте: перейдите на вкладку Вид -> показать -> personal.xlsb -> ОК -> записать новый макрос -> В диалоговом окне: имя: "pasteVvalue" -> ярлык "crtl + D" -> запись в «папке личных макросов» -> ok. Использовать любую произвольную команду с ленты -> остановить запись -> показать макрос: «pasteValue» -> стереть весь код vba между строкой Sub pasteValue () и End sub вставьте следующее -> сохранить
Отныне crtl + d будет вести себя так, как вы хотите (копировать значение или формулу при смене ссылок) во всех файлах Excel, которые вы используете на вашем компьютере.
источник
xlPasteValues
вместоxlPasteFormulas
. Я обновил свой вопрос решением, используя вашу идею. Если никто не посоветует более родной метод достижения этой цели, вы получите ответ.Этот макрос отражает функциональность ответа Тейлина (автозаполнение без форматирования) в VBA, вдохновленную вашим кодом:
Обратите внимание, что он явно обрабатывает выделение из нескольких ячеек, поскольку в Excel обработка этого кода является загадочной.
источник
A1
=3
иB1
==A1
. Теперь выберите диапазон A2: B2 и запустите свой макрос. Он пытается заполнить серию столбца A, в то время как он корректирует ссылку на ячейку столбца B. Однако, если вы запустите свой макрос только на ячейке B2, он скопирует значение.Application.Union(above, above.Offset(-1, 0)).FillDown
из моего ОП?