Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/удаление/копирование столбцов для сохранения диапазона - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: китин, _Boroda_  
удаление/копирование столбцов для сохранения диапазона
карандаш Дата: Суббота, 16.02.2013, 20:57 | Сообщение № 41
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
и ещ§ вопрос
тут меня осенило )))
я переставил дату вперед на 2 дня, чтобы получить понедельник
запустил, проверил, работает
потом пришлось вернуть дату назад
запустил эксел, открыл вашу программу - все зависло насмерть (потому файл сразу и не прикрепил вовремя)
насколько я понял у вас нет задиты от неправильной даты
если файл с такими датами "будущего" (т.е. он отработал текущую дату, а потом дату СЕГОДНЯ поставили раньшую по времени), то его цикл очень большой (сотни, если не тысячи лет перебирать по дням)
наверное, стоит ввести проверку на такой случай?


Сообщение отредактировал карандаш - Суббота, 16.02.2013, 20:59
 
Ответить
Сообщениеи ещ§ вопрос
тут меня осенило )))
я переставил дату вперед на 2 дня, чтобы получить понедельник
запустил, проверил, работает
потом пришлось вернуть дату назад
запустил эксел, открыл вашу программу - все зависло насмерть (потому файл сразу и не прикрепил вовремя)
насколько я понял у вас нет задиты от неправильной даты
если файл с такими датами "будущего" (т.е. он отработал текущую дату, а потом дату СЕГОДНЯ поставили раньшую по времени), то его цикл очень большой (сотни, если не тысячи лет перебирать по дням)
наверное, стоит ввести проверку на такой случай?

Автор - карандаш
Дата добавления - 16.02.2013 в 20:57
AlexM Дата: Суббота, 16.02.2013, 21:10 | Сообщение № 42
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Допустим в ячейке А1 имя листа
попробуйте так
[vba]
Код
Set today_1 = Sheets(Range("A1")).Range("C4:D20")
[/vba]
Цитата (карандаш)
тут меня осенило

Сделайте защиту на редактирование ячеек в строке 1 и 2
Какая разница макрос запретит менять дату или защита не даст.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеДопустим в ячейке А1 имя листа
попробуйте так
[vba]
Код
Set today_1 = Sheets(Range("A1")).Range("C4:D20")
[/vba]
Цитата (карандаш)
тут меня осенило

Сделайте защиту на редактирование ячеек в строке 1 и 2
Какая разница макрос запретит менять дату или защита не даст.

Автор - AlexM
Дата добавления - 16.02.2013 в 21:10
карандаш Дата: Суббота, 16.02.2013, 21:28 | Сообщение № 43
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Цитата (AlexM)
Сделайте защиту на редактирование ячеек в строке 1 и 2
Какая разница макрос запретит менять дату или защита не даст.


я плохо объяснил
никто не менял дату сам в программе
я заменил системную дату на компе, поставил 18-ое
ваша программа отработала алгоритм, считая что сегодня понедельник 18-го (потому что я переставил время на компе на два дня вперед)
я закрыл ваш файл с сохранением
потом вернул время обратно и снова открыл ваш файл
данные в ней оказались "из будущего"
сейчас снова проверил
да, зависает
вот про такую защиту я и говорил - про манипуляцию с датами на самом компе
чтобы он не приступал к обработке, если дата из будущего


Сообщение отредактировал карандаш - Суббота, 16.02.2013, 21:39
 
Ответить
Сообщение
Цитата (AlexM)
Сделайте защиту на редактирование ячеек в строке 1 и 2
Какая разница макрос запретит менять дату или защита не даст.


я плохо объяснил
никто не менял дату сам в программе
я заменил системную дату на компе, поставил 18-ое
ваша программа отработала алгоритм, считая что сегодня понедельник 18-го (потому что я переставил время на компе на два дня вперед)
я закрыл ваш файл с сохранением
потом вернул время обратно и снова открыл ваш файл
данные в ней оказались "из будущего"
сейчас снова проверил
да, зависает
вот про такую защиту я и говорил - про манипуляцию с датами на самом компе
чтобы он не приступал к обработке, если дата из будущего

Автор - карандаш
Дата добавления - 16.02.2013 в 21:28
AlexM Дата: Суббота, 16.02.2013, 21:40 | Сообщение № 44
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Предлагаю сделать защиту на открытие файла на два дня. biggrin
Если дата в расписании из будущего, при открытии дни сдвигать не влево , а вправо. Так?
Программа ориентируется на системную дату и если вы установите следующий год, то какой алгоритм сможет понять, что дата в системе неправильная, как от этого защитится? Я не знаю.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеПредлагаю сделать защиту на открытие файла на два дня. biggrin
Если дата в расписании из будущего, при открытии дни сдвигать не влево , а вправо. Так?
Программа ориентируется на системную дату и если вы установите следующий год, то какой алгоритм сможет понять, что дата в системе неправильная, как от этого защитится? Я не знаю.

Автор - AlexM
Дата добавления - 16.02.2013 в 21:40
Serge_007 Дата: Суббота, 16.02.2013, 21:44 | Сообщение № 45
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (AlexM)
какой алгоритм сможет понять, что дата в системе неправильная, как от этого защитится?

Можно записывать дату/время при сохранении файла и сверять при открытии с текущей


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (AlexM)
какой алгоритм сможет понять, что дата в системе неправильная, как от этого защитится?

Можно записывать дату/время при сохранении файла и сверять при открытии с текущей

Автор - Serge_007
Дата добавления - 16.02.2013 в 21:44
карандаш Дата: Суббота, 16.02.2013, 21:44 | Сообщение № 46
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Цитата (AlexM)
попробуйте так
Set today_1 = Sheets(Range("A1")).Range("C4:D20")


не, ругается на эту строчку
 
Ответить
Сообщение
Цитата (AlexM)
попробуйте так
Set today_1 = Sheets(Range("A1")).Range("C4:D20")


не, ругается на эту строчку

Автор - карандаш
Дата добавления - 16.02.2013 в 21:44
карандаш Дата: Суббота, 16.02.2013, 21:48 | Сообщение № 47
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Цитата (AlexM)
Если дата в расписании из будущего, при открытии дни сдвигать не влево , а вправо. Так?


ну, не стоит заморачиваться )))
просто игнорировать обработку
а я кнопочку приделаю и макрос назначу, который устанавливает текущую дату в G1
и все
помогите правильно проверить дату перед обработкой
я не знаю как правильно сравнивать даты
 
Ответить
Сообщение
Цитата (AlexM)
Если дата в расписании из будущего, при открытии дни сдвигать не влево , а вправо. Так?


ну, не стоит заморачиваться )))
просто игнорировать обработку
а я кнопочку приделаю и макрос назначу, который устанавливает текущую дату в G1
и все
помогите правильно проверить дату перед обработкой
я не знаю как правильно сравнивать даты

Автор - карандаш
Дата добавления - 16.02.2013 в 21:48
AlexM Дата: Суббота, 16.02.2013, 21:50 | Сообщение № 48
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (Serge_007)
Можно записывать дату/время при сохранении файла и сверять при открытии с текущей

В Макросе это и делается. Вопрос в том, что если кто-то изменит системную дату на будущее, то макрос ее отработает, а когда обратно системную изменят на реальную, то макрос "клинит".



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (Serge_007)
Можно записывать дату/время при сохранении файла и сверять при открытии с текущей

В Макросе это и делается. Вопрос в том, что если кто-то изменит системную дату на будущее, то макрос ее отработает, а когда обратно системную изменят на реальную, то макрос "клинит".

Автор - AlexM
Дата добавления - 16.02.2013 в 21:50
Serge_007 Дата: Суббота, 16.02.2013, 21:58 | Сообщение № 49
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
IF "текущая дата"< "Дата сохранения файла" THEN Exit Sub


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеIF "текущая дата"< "Дата сохранения файла" THEN Exit Sub

Автор - Serge_007
Дата добавления - 16.02.2013 в 21:58
карандаш Дата: Суббота, 16.02.2013, 22:26 | Сообщение № 50
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
в строку
[vba]
Код
If today = Date Then Exit Sub
[/vba]
добавил >
получил
[vba]
Код
If today >= Date Then Exit Sub
[/vba]
проверил
работает
спасибо

осталось с именем листа справиться
1. найти его по метке в ячейке А1
2. найденный лист присвоить переменной, с которой потом можно будет работать
и все будет просто отлично! )))
 
Ответить
Сообщениев строку
[vba]
Код
If today = Date Then Exit Sub
[/vba]
добавил >
получил
[vba]
Код
If today >= Date Then Exit Sub
[/vba]
проверил
работает
спасибо

осталось с именем листа справиться
1. найти его по метке в ячейке А1
2. найденный лист присвоить переменной, с которой потом можно будет работать
и все будет просто отлично! )))

Автор - карандаш
Дата добавления - 16.02.2013 в 22:26
карандаш Дата: Суббота, 16.02.2013, 22:32 | Сообщение № 51
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Цитата (карандаш)
осталось с именем листа справиться

такой вопрос
если сделать нужный лист текущим (активным), то можно будет обойтись без имени листа в формуле?
вместо
[vba]
Код
Set today_1 = Sheets("расписание 2").Range("C4:D20")
[/vba]
написать что-то вроде
[vba]
Код
Set today_1 = ActiveSheet.Range("C4:D20")
[/vba]

или пока книга не открылась активность невозможно присвоить/задать?
 
Ответить
Сообщение
Цитата (карандаш)
осталось с именем листа справиться

такой вопрос
если сделать нужный лист текущим (активным), то можно будет обойтись без имени листа в формуле?
вместо
[vba]
Код
Set today_1 = Sheets("расписание 2").Range("C4:D20")
[/vba]
написать что-то вроде
[vba]
Код
Set today_1 = ActiveSheet.Range("C4:D20")
[/vba]

или пока книга не открылась активность невозможно присвоить/задать?

Автор - карандаш
Дата добавления - 16.02.2013 в 22:32
AlexM Дата: Суббота, 16.02.2013, 22:36 | Сообщение № 52
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Тогда можно так
[vba]
Код
If today >= Date Then Go To Err
[/vba]
Метку поставить перед строкой
[vba]
Код
Err:
Range("G1") = Date
[/vba]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Суббота, 16.02.2013, 22:37
 
Ответить
СообщениеТогда можно так
[vba]
Код
If today >= Date Then Go To Err
[/vba]
Метку поставить перед строкой
[vba]
Код
Err:
Range("G1") = Date
[/vba]

Автор - AlexM
Дата добавления - 16.02.2013 в 22:36
AlexM Дата: Суббота, 16.02.2013, 22:41 | Сообщение № 53
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Цитата (AlexM)
если сделать нужный лист текущим (активным)

Как определить нужный?
Вы предлагали у нужного в А1 что-то прописать. Не обязательно Имя листа, можно просто точку или другой знак.
При переборе в цикле листов, метка укажет на лист, в котором расписание.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
Сообщение
Цитата (AlexM)
если сделать нужный лист текущим (активным)

Как определить нужный?
Вы предлагали у нужного в А1 что-то прописать. Не обязательно Имя листа, можно просто точку или другой знак.
При переборе в цикле листов, метка укажет на лист, в котором расписание.

Автор - AlexM
Дата добавления - 16.02.2013 в 22:41
карандаш Дата: Суббота, 16.02.2013, 22:42 | Сообщение № 54
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
наверное, так?
[vba]
Код
If today < Date Then Go To ОКеу
Range("G1") = Date
ОКеу:
[/vba]
 
Ответить
Сообщениенаверное, так?
[vba]
Код
If today < Date Then Go To ОКеу
Range("G1") = Date
ОКеу:
[/vba]

Автор - карандаш
Дата добавления - 16.02.2013 в 22:42
AlexM Дата: Суббота, 16.02.2013, 22:44 | Сообщение № 55
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Метка перед строкой записи даты в ячейку. Тогда вам не надо будет это делать руками.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеМетка перед строкой записи даты в ячейку. Тогда вам не надо будет это делать руками.

Автор - AlexM
Дата добавления - 16.02.2013 в 22:44
карандаш Дата: Суббота, 16.02.2013, 22:44 | Сообщение № 56
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
Цитата (AlexM)
Как определить нужный?
Вы предлагали у нужного в А1 что-то прописать. Не обязательно Имя листа, можно просто точку или другой знак.
При переборе в цикле листов, метка укажет на лист, в котором расписание.

совершенно верно

просто я не знаю как перебирать имеющиеся в наличии листы в книге
и как сравнивать у i-го листа ячейку А1 с константой

помогите, пожалуйста, с перебором листов


Сообщение отредактировал карандаш - Суббота, 16.02.2013, 22:46
 
Ответить
Сообщение
Цитата (AlexM)
Как определить нужный?
Вы предлагали у нужного в А1 что-то прописать. Не обязательно Имя листа, можно просто точку или другой знак.
При переборе в цикле листов, метка укажет на лист, в котором расписание.

совершенно верно

просто я не знаю как перебирать имеющиеся в наличии листы в книге
и как сравнивать у i-го листа ячейку А1 с константой

помогите, пожалуйста, с перебором листов

Автор - карандаш
Дата добавления - 16.02.2013 в 22:44
AlexM Дата: Суббота, 16.02.2013, 23:06 | Сообщение № 57
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Откройте файл без запуска макроса. Добавьте сколько угодно листов и сделайте любой активным. Сохраните файл. Откройте с макросом.
См. Файл.
К сообщению приложен файл: Grafik031m2_new.xls (71.0 Kb)



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеОткройте файл без запуска макроса. Добавьте сколько угодно листов и сделайте любой активным. Сохраните файл. Откройте с макросом.
См. Файл.

Автор - AlexM
Дата добавления - 16.02.2013 в 23:06
карандаш Дата: Воскресенье, 17.02.2013, 00:56 | Сообщение № 58
Группа: Проверенные
Ранг: Обитатель
Сообщений: 329
Репутация: 8 ±
Замечаний: 0% ±

2010
AlexM,
проверил
это работает
спасибо!

только списки так и не фильтруются (((
помогите, если можно, со списками
при изменении списка на листе "адреса" они не меняютя в выпадающем списке

расширенный (для удобства контроля) список фирм в новом файле
К сообщению приложен файл: 9626691.xls (81.5 Kb)
 
Ответить
СообщениеAlexM,
проверил
это работает
спасибо!

только списки так и не фильтруются (((
помогите, если можно, со списками
при изменении списка на листе "адреса" они не меняютя в выпадающем списке

расширенный (для удобства контроля) список фирм в новом файле

Автор - карандаш
Дата добавления - 17.02.2013 в 00:56
AlexM Дата: Воскресенье, 17.02.2013, 10:19 | Сообщение № 59
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
У меня список с фильтром не получается поправить.
В сообщении №28 _Boroda_ предложил два варианта списков с фильтрами. Один у меня не работал сразу, видимо из-за Excel 2003. Попробуйте его применить. Но если у вас заработает, то младших версиях Эксель будут проблемы.



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеУ меня список с фильтром не получается поправить.
В сообщении №28 _Boroda_ предложил два варианта списков с фильтрами. Один у меня не работал сразу, видимо из-за Excel 2003. Попробуйте его применить. Но если у вас заработает, то младших версиях Эксель будут проблемы.

Автор - AlexM
Дата добавления - 17.02.2013 в 10:19
nilem Дата: Воскресенье, 17.02.2013, 12:28 | Сообщение № 60
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
насчет фильтра - может комбо подойдет?
выбираем из списка нужное значение или щелкаем в сером столбце

в 2003 какие-то ошибки возникают при открытии, поэтому xlsm

высоту, наверное, лучше оставить как есть, т.е. .Height = Target.Height (без +5)
К сообщению приложен файл: _9626691-1.xlsm (49.3 Kb)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Воскресенье, 17.02.2013, 12:31
 
Ответить
Сообщениенасчет фильтра - может комбо подойдет?
выбираем из списка нужное значение или щелкаем в сером столбце

в 2003 какие-то ошибки возникают при открытии, поэтому xlsm

высоту, наверное, лучше оставить как есть, т.е. .Height = Target.Height (без +5)

Автор - nilem
Дата добавления - 17.02.2013 в 12:28
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!