PDA

Показать полную графическую версию : макрос для автоматического копирования и обновления строк Excel 2011 (Mac)


tata_85
07-08-2013, 13:53
Добрый день,

я настояший новичок, что касается Visual Basic программирования. Буду рада любой помощи!

Задача:

> лист "Sheet1" содержит А14:М160 данные
> эти данные должны автоматически копироваться в лист "Sheet2" начиная с А30
> т.е. если в листе "Sheet1" начиная с А14 добавляются или удаляются строки или изменяются данные, то данные / строки в листе "Sheet2" актуализируются автоматически (начиная с А30)
> новые столбцы в листе "Sheet1" не предусмотрены
> строки в листе "Sheet1" могут перемещатся (Copy/Paste)
> если возможно добавить в лист "Sheet2" кнопку "данные актуализировать", то тоже было бы замечательно

СПАСИБО заранее за помощ!

jugansarr
07-08-2013, 17:46
tata_85,
Кто и как заносит данные в Sheet1?
Вы заносите эти данные? или ваша задача "актуализировать Sheet2? , а данные в Sheet1 заносятся (меняются) кем то другим

okshef
07-08-2013, 21:16
Нажмите Alt+F11, запустите редактор VBA, двойным щелчком щелкните по "Лист1"
Скопируйте и вставьте в поле справа такой код:
Private Sub Worksheet_Change(ByVal Target As Range)
Me.[A14:M160].Copy Sheets(2).[A30]
End Sub
Теперь после изменения данных в любой ячейке в "Лист1" вашего диапазона те же данные будут появляться в "Лист2" начиная с "А30".

Iska
07-08-2013, 23:20
Скопируйте и вставьте в поле справа такой код:
Private Sub Worksheet_Change(ByVal Target As Range)
Me.[А14:М160].Copy Sheets(2).[A30]
End Sub»
okshef, это такой синтаксис в новых версиях VBA Office'а?

okshef
07-08-2013, 23:57
Он и в старых был приемлем

Нашел. Из встроенной справки:
Excel Developer Reference
How to: Refer to Cells by Using Shortcut Notation

You can use either the A1 reference style or a named range within brackets as a shortcut for the Range property. You do not have to type the word "Range" or use quotation marks, as shown in the following examples.

Sub ClearRange()
Worksheets("Sheet1").[A1:B5].ClearContents
End Sub

Sub SetValue()
[MyRange].Value = 30
End Sub

Iska
08-08-2013, 01:34
Нашел. Из встроенной справки: »
Я выяснил, почему предыдущий код (http://forum.oszone.net/post-2198151.html#post2198151) вызывал у меня ошибку времени исполнения: там использована кириллица в адресах при задании диапазона ;). Очевидно, как автор, не думая, написала (http://forum.oszone.net/post-2197899.html#post2197899) кириллицу в адресе, так она и попала к Вам в неизменном виде методом копирования.

okshef
08-08-2013, 01:36
Это я из сообщения ТС скопировал.
Пост поправил.

Кстати, я совсем не уверен, что код запустится в Office для Mac... Нужно, чтобы автор проверил.

Iska
08-08-2013, 02:12
Это я из сообщения ТС скопировал. »
Ну, я так и понял, подняв глаза повыше. Я позже дополнил своё сообщение.

tata_85
08-08-2013, 19:17
спасибо огромное!!!! всё гениальное и правдо просто :-)
код отлично работает и в Мас!

Цель такова, что в лист 1 команда задаёт свою оценку, сколько дляться отдельные задания для создания веб-страницы.
В лист 2 начальник проекта может вносить корректировки (потому что конкуренты дешевле и т.д.) и делать финальное/ую предложение/ цену. Но команда работает по изначалной оценки. Хотим создать такую таблицу, что бы было более прозрачно, почему проекты экономически эффективны или нет...

На лист 1 после окончания внесения данных хотим дополнительно наложить защиту паролем.
Может есть ещё возможность оптически выделять в листе 2 изменённые числа?

СПАСИБО!

okshef
08-08-2013, 20:05
tata_85, рано радуетесь. Каждый раз после изменения в листе 1 все правки начальника будут исчезать...

jugansarr
09-08-2013, 16:03
okshef,
Можно добавить отдельную колонку "справа" в Sheet1 с пометкой "правка начальника - не изменять!!!!" Пусть он в ней галочки ставит - что обновлять а что не трогать.




© OSzone.net 2001-2012