PDA

Показать полную графическую версию : Макросы в excel


Bordlord
23-10-2012, 10:56
Подскажите как написать макрос который при срабатывании бы удалял строчку с лист1, но при этом не рушилась подстановка из ячеек на лист2 с лист1. Т.е. Есть таблица на лист1, допустим 3*10, есть шаблон на лист2 в котором в некоторых ячейках вставлены данные с =лист1!a1, b1, c1. Как написать макрос так чтобы можно было удалять строку на лист1, чтобы при этом данные на лист2 не принимали вид =лист1!#ссылка#?

Iska
23-10-2012, 12:26
Bordlord, никак. Вы удаляете объект, ссылка на который есть в формуле. Куда этой ссылке ссылаться после удаления объекта?!

Возможные обходные пути могут быть изложены после выкладывания образца документа.

Bordlord
23-10-2012, 14:32
Выложил образец документа, при удалении первой строчки на листе1 ссылка на листе2 вида =лист1!а1 становиться =лист1#CСЫЛКА#

Iska
23-10-2012, 14:40
Bordlord, я имел в виду — образец реального документа. Тогда можно будет что-то советовать. А так — ответ пока тот же: никак.

Bordlord
23-10-2012, 14:43
Я и хочу создать реальный документ, его пока не существует

Iska
23-10-2012, 16:09
Bordlord, прямого пути для воплощения Вашего желания не существует — об этом я уже писал выше. Это ограничение обусловлено самой системой и никак не может быть преодолено. Но могут быть обходные пути.

Зачем, например, должно осуществляться удаление строки, на ячейки которой есть ссылки в формулах? Что, также, должно происходить с формулами после удаления строки, на ячейку в которой в них были ссылки? Каковы Ваши потребности? Т.е., Вы выше написали как «не хотелось бы», а теперь изложите как и чего «хотелось бы».

Bordlord
23-10-2012, 16:23
Надо чтобы в шаблоне с лист2 при исполнении макроса менялись данные в строках со ссылками, данные берутся из листа1

Iska
23-10-2012, 17:47
Bordlord, сожалею, но я бессилен что-либо понять в Вашем изложении задачи.

Bordlord
23-10-2012, 20:47
Я сам иногда не могу понять чего хочу)) мне нужно печатать товарнотранспортные накладные, в них есть статичные данные а есть те которые меняются на каждой ттнке, соответственно мне надо чтобы они менялись по нажатию макроса. Т.е алгоритм такой печать-> макрос-> печать-> макрос-> печать.

Надеюсь так понятнее

Iska
23-10-2012, 21:50
Bordlord, нет, не понятно. Понадобится реальный пример с подробными разъяснениями.

okshef
23-10-2012, 22:06
Bordlord, чтобы воплотить вашу хотелку, нужно заполнять содержимое листа 2 с помощью макросов, а не формул. Поэтому максимально точно изложите алгоритм необходимых связей.

Bordlord
23-10-2012, 22:41
Сделал табличку с пояснениями

Iska
24-10-2012, 00:23
Сделал табличку с пояснениями
Шаблон с заполненными данными нужно запускать на печать на матричном принтере…»
Sic! Стал понятен смысл слова шаблон в контексте задачи.

Вставьте данный код:
Option Explicit

Sub InsertValuesFromActiveCellIntoWorksheet()
If ActiveSheet.Name = "Лист1" Then
If Right(ActiveCell.Address(ReferenceStyle:=xlR1C1), 2) = "C1" Then
If Not IsEmpty(ActiveCell.Value) Then
With ThisWorkbook
With .Worksheets.Item("Лист2")
.Cells.Item(13, 1).Value = ActiveCell.Value
.Cells.Item(15, 4).Value = ActiveCell.Offset(0, 1).Value
.Cells.Item(13, 6).Value = ActiveCell.Offset(0, 2).Value

.PrintPreview
End With
End With
Else
MsgBox "Активная ячейка не содержит данных", vbExclamation, "Ошибка"
End If
Else
MsgBox "Активная ячейка не находится в столбце [A]", vbExclamation, "Ошибка"
End If
Else
MsgBox "Активная ячейка не находится на листе [Лист1]", vbExclamation, "Ошибка"
End If
End Sub

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

Или, может, Вам нужно, перебрав созданный список, просто отпечатать всё подряд?

Bordlord
24-10-2012, 13:17
Мне нужно каждый раз после печати на принтере отматывать бланки назад, так что нужно поменять данные, нажать печать, отмотать, поменять данные, нажать печать, отмотать и т.д.

Можно пояснить куда конктретно вставить?

Iska
24-10-2012, 13:39
отматывать бланки назад »
Поясните подробнее, пожалуйста.

Bordlord
24-10-2012, 13:56
кнопочкой на принтере после печати каждой ттнки надо отматывать назад

Iska
24-10-2012, 14:32
кнопочкой на принтере после печати каждой ттнки надо отматывать назад »
А что это даёт?

Можно пояснить куда конктретно вставить? »
Я писал — куда.

Вам желательно ознакомиться с документацией:
Начало работы с VBA в Excel 2010 (http://msdn.microsoft.com/ru-ru/library/office/ee814737.aspx)
Краткое руководство: создание макроса - Excel - Office.com (http://office.microsoft.com/ru-ru/excel-help/HA010370613.aspx)
Запуск макроса - Excel - Office.com (http://office.microsoft.com/ru-ru/excel-help/HP010342865.aspx?CTT=1)

Bordlord
24-10-2012, 23:32
при нажатии печать выпадает ошибка 400

Iska
25-10-2012, 02:08
при нажатии печать выпадает ошибка 400 »
Приведите скриншот.




© OSzone.net 2001-2012