Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 15:14   #1
Noki
 
Регистрация: 18.03.2012
Сообщений: 7
По умолчанию Редактирование готовой таблицы без нарушения ее функциональности

Добрый день, друзья,
помогите пож-та.

У меня есть таблица в excel с макросами, кнопками и т.п. Мне нужно добавить в эту таблицу еще столбцов. Если их просто вставлять, естественно, все макросы сбиваются.
Я понимаю, что задача очень простая, но для неграмотных она остается чересчур сложной.
Мог бы мне кто помочь? Безвозмездно или возмездно, это уже как нужно будет

Сам пробую, но у меня очень тяжко это выходит, а во времени, как всегда, мы все ограничены.

Прикрепил архив, в нем 2 таблички: одна - оригинал, вторая - то, что нужно.
Все добавленные столбцы выделил желтым.
Проблема в том, что при нажатии кнопок "добавить контакт" значения, которые должны подставляться автоматически - сбиваются на то число столбцов, которое я и добавил.
В табличке 2 листа, на обоих ситуация одинаковая.
Также со второго листа информация еще перемещается на первый и, соответственно, тоже сбивается.


Буду очень признателен за помощь.
Вложения
Тип файла: rar табличка.rar (2.47 Мб, 12 просмотров)
Noki вне форума Ответить с цитированием
Старый 18.03.2012, 15:34   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
понимаю, что задача очень простая
Вот уж не сказал-бы.
Не знаю, может меня поправят более опытные, но на мой взгляд, задача как раз -таки довольно муторная и обьем работы большой.
Переписывать все адреса в макросах...
или же вставлять сдвиг на то количество столбцов, что вставлялись.
все равно переписывать
p.s.
Глянул макрос, вроде небольшой
позанимайтесь со строками типа вот этой
cell.Offset(-1, 7).Copy Destination:=cell.Offset(0, 7)
измените нужные сдвиги
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 18.03.2012 в 15:40.
VictorM вне форума Ответить с цитированием
Старый 18.03.2012, 16:04   #3
Noki
 
Регистрация: 18.03.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Вот уж не сказал-бы.
Не знаю, может меня поправят более опытные, но на мой взгляд, задача как раз -таки довольно муторная и обьем работы большой.
Переписывать все адреса в макросах...
или же вставлять сдвиг на то количество столбцов, что вставлялись.
все равно переписывать
По крайней мере опытным легче сразу увидеть где какую цифру поменять, нежели мне. Я больше про это имел в виду.
Соглашусь, что может быть муторно.
Если направить меня в нужном направлении где какие цифры поменять, то я наверно и сам справлюсь
Noki вне форума Ответить с цитированием
Старый 18.03.2012, 21:05   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

В макросе NEW_LINE_2 назначенному кнопке "Добавить контакт"
в строке
Set cell = ActiveSheet.Cells(65000, 4).End(xlUp).Offset(1, 0)
замените 4 на 7, т.е. так
Set cell = ActiveSheet.Cells(65000, 7).End(xlUp).Offset(1, 0)
если я правильно понял - все работает.
Код:
Sub NEW_LINE_2()
    Worksheets("Активные клиенты").Activate
    ActiveSheet.Unprotect Password:="1111"
    Dim cell As Object
    Set cell = ActiveSheet.Cells(65000, 7).End(xlUp).Offset(1, 0)
    cell.FormulaLocal = VBA.Format(VBA.Now, "DD.MM.YYYY")    '"=СЕГОДНЯ()" Дата установления статуса
    'cell.Offset(-1, 4).Copy Destination:=cell.Offset(0, 4)
    cell.Offset(-1, 7).Copy Destination:=cell.Offset(0, 7)    'статус клиента
    cell.Offset(-1, 8).Copy Destination:=cell.Offset(0, 8)    'дата посл контакта
    cell.Offset(-1, 9).Copy Destination:=cell.Offset(0, 9)    'дата след контакта
    cell.Offset(-1, 10).Copy Destination:=cell.Offset(0, 10)    'тип контакта
    cell.Offset(-1, 11).Copy Destination:=cell.Offset(0, 11)    'коментарий к действию
    ActiveSheet.Protect Password:="1111"
End Sub
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 18.03.2012 в 21:14.
VictorM вне форума Ответить с цитированием
Старый 18.03.2012, 22:48   #5
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

То же:
Код:
Sub NEW_LINE_2()
    With ['Активные клиенты'!G65000].End(xlUp)(2)
    .Parent.Unprotect "1111": .Value = Date
    .Offset(-1, 7).Resize(, 5).Copy .Offset(0, 7)
    .Parent.Protect "1111": .Parent.Activate
    End With
End Sub
Еще если при первой защите указать UserInterfaceOnly:=true, то все последующие
.Unprotect, .protect можно убрать. Т.е. отстанется только:
Код:
Sub NEW_LINE_2_1()
    With ['Активные клиенты'!G65000].End(xlUp)(2)
    .Value = Date
    .Offset(-1, 7).Resize(, 5).Copy .Offset(0, 7)
    End With
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 18.03.2012 в 23:04.
kuklp вне форума Ответить с цитированием
Старый 18.03.2012, 23:34   #6
Noki
 
Регистрация: 18.03.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
В макросе NEW_LINE_2 назначенному кнопке "Добавить контакт"
в строке
Set cell = ActiveSheet.Cells(65000, 4).End(xlUp).Offset(1, 0)
замените 4 на 7, т.е. так
Set cell = ActiveSheet.Cells(65000, 7).End(xlUp).Offset(1, 0)
если я правильно понял - все работает.
Код:
Sub NEW_LINE_2()
    Worksheets("Активные клиенты").Activate
    ActiveSheet.Unprotect Password:="1111"
    Dim cell As Object
    Set cell = ActiveSheet.Cells(65000, 7).End(xlUp).Offset(1, 0)
    cell.FormulaLocal = VBA.Format(VBA.Now, "DD.MM.YYYY")    '"=СЕГОДНЯ()" Дата установления статуса
    'cell.Offset(-1, 4).Copy Destination:=cell.Offset(0, 4)
    cell.Offset(-1, 7).Copy Destination:=cell.Offset(0, 7)    'статус клиента
    cell.Offset(-1, 8).Copy Destination:=cell.Offset(0, 8)    'дата посл контакта
    cell.Offset(-1, 9).Copy Destination:=cell.Offset(0, 9)    'дата след контакта
    cell.Offset(-1, 10).Copy Destination:=cell.Offset(0, 10)    'тип контакта
    cell.Offset(-1, 11).Copy Destination:=cell.Offset(0, 11)    'коментарий к действию
    ActiveSheet.Protect Password:="1111"
End Sub
вроде сдвинулось, спасибо.
Осталось только поменять числа для столбцов, которые в оригинале с К по О. Я так понимаю, что вы мне как раз подсказку и сделали, добавив комментарии.
Noki вне форума Ответить с цитированием
Старый 18.03.2012, 23:35   #7
Noki
 
Регистрация: 18.03.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
То же:
Код:
Sub NEW_LINE_2()
    With ['Активные клиенты'!G65000].End(xlUp)(2)
    .Parent.Unprotect "1111": .Value = Date
    .Offset(-1, 7).Resize(, 5).Copy .Offset(0, 7)
    .Parent.Protect "1111": .Parent.Activate
    End With
End Sub
Еще если при первой защите указать UserInterfaceOnly:=true, то все последующие
.Unprotect, .protect можно убрать. Т.е. отстанется только:
Код:
Sub NEW_LINE_2_1()
    With ['Активные клиенты'!G65000].End(xlUp)(2)
    .Value = Date
    .Offset(-1, 7).Resize(, 5).Copy .Offset(0, 7)
    End With
End Sub
здесь я если честно запутался это нужно добавить или заменить? у меня что то вобще перестает все работать..

Последний раз редактировалось Noki; 18.03.2012 в 23:39.
Noki вне форума Ответить с цитированием
Старый 18.03.2012, 23:46   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Осталось только поменять числа для столбцов, которые в оригинале с К по О.
Менять уже ничего не нужно, все вставляется куда надо.
пробуйте
хотя...Вам виднее))
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 18.03.2012, 23:49   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Что перестает?
Вложения
Тип файла: rar база_с изменениями.rar (130.6 Кб, 13 просмотров)
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 19.03.2012, 06:59   #10
Noki
 
Регистрация: 18.03.2012
Сообщений: 7
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Что перестает?
если говорить про исправленный вариант, то в блоке "ТЕКУЩИЙ СТАТУС работы с КЛИЕНТОМ (итоговая информация).** Заполняется автоматически", который расположен в столбцах с N по R, при добавлении контакта не встает формула в столбец N и О.
В стобце BE и BG пропал выпадающий список (и в остальных таких же столбцах таблицы)
Noki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редактирование готовой программы под дипломный проэкт Электронщик Помощь студентам 7 29.01.2012 18:56
Изменение откомпилированой программы без нарушения закона Levsha100 Свободное общение 5 20.07.2010 22:37
Редактирование таблицы 1134 Microsoft Office Excel 7 01.02.2010 10:33
Сохранение документа из TWebBrowser(без нарушения работы страницы) Пепел Феникса Работа с сетью в Delphi 2 13.03.2009 21:59
Редактирование таблицы Rio309 БД в Delphi 6 16.11.2008 12:28