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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2013, 18:15   #1
normres
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 10
По умолчанию Удаление добавление защищенных строк с условием

Здравствуйте.

Подскажите как макросом удалить строку защищенного листа?
Удаление происходит в диапазоне столбца начиная с ячейки В9 и заканчивая ячейкой столбца В в которой вписана точка "." Точка является координатой не постоянной и меняет положение по строкам при удалении и добавлении строк и поэтому является в тоже время координатой для написания макроса. Удаление происходит лишь тех строк, которые являются пустыми в данном диапазоне столбца.
Далее как другим макросом добавить строку над точкой дублируя строку над ячейкой с координатой точка "."
Изображения
Тип файла: jpg str.jpg (59.9 Кб, 102 просмотров)
normres вне форума Ответить с цитированием
Старый 12.10.2013, 18:46   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub DelBlankRow()
  Const psw As String = "пароль"
  With ActiveSheet
    .Unprotect psw
    Range(.Cells(9, 2), .Columns(2).Find(".")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .Protect psw
  End With
End Sub


Sub AddRowAbove()
  Const psw As String = "пароль"
  With ActiveSheet
    .Unprotect psw
    .Columns(2).Find(".").EntireRow.Insert shift:=xlDown
    .Protect psw
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.10.2013, 19:21   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Дык, можно защитить с userinterfaceonly = true один раз и делай с ним, что хошь
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.10.2013, 20:09   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Кросс: http://www.planetaexcel.ru/forum/ind...ID=1&TID=51812
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.10.2013, 20:45   #5
normres
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Sub DelBlankRow()
  Const psw As String = "пароль"
  With ActiveSheet
    .Unprotect psw
    Range(.Cells(9, 2), .Columns(2).Find(".")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .Protect psw
  End With
End Sub


Sub AddRowAbove()
  Const psw As String = "пароль"
  With ActiveSheet
    .Unprotect psw
    .Columns(2).Find(".").EntireRow.Insert shift:=xlDown
    .Protect psw
  End With
End Sub
Тестирую код на удаление
Код:
Sub DelBlankRow()
  Const psw As String = "пароль"
  With ActiveSheet
    .Unprotect psw
    Range(.Cells(9, 2), .Columns(2).Find(".")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    .Protect psw
  End With
End Sub
Выдает ошибку на данную строку
Цитата:
"Данная команда не приемлема для перекрывающихся диапазонов."
Код:
Range(.Cells(9, 2), .Columns(2).Find(".")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Последний раз редактировалось normres; 12.10.2013 в 20:49.
normres вне форума Ответить с цитированием
Старый 12.10.2013, 20:59   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

не знаю, что там у Вас, у меня эта этот код работает и ошибок не выдает.
Проверил
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 12.10.2013, 21:06   #7
normres
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
не знаю, что там у Вас, у меня эта этот код работает и ошибок не выдает.
Проверил
Ну часть ячеек (не беру во внимание столбец 2) удаляемой строки заполнены данными и выходит вот такая ошибка.
"Данная команда не приемлема для перекрывающихся диапазонов."
Возможно из за этого...
normres вне форума Ответить с цитированием
Старый 12.10.2013, 21:13   #8
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Возможно из за этого...
В таких случаях нужно выкладывать пример файла с данными, а не картинку, многие вопросы и лишние посты исчезнут сами собой.
А так долго можно гадать, почему у Вас не работает работоспособный код.
зы
файл Excel нужно предварительно упаковать
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 12.10.2013, 21:26   #9
normres
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 10
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
В таких случаях нужно выкладывать пример файла с данными, а не картинку, многие вопросы и лишние посты исчезнут сами собой.
А так долго можно гадать, почему у Вас не работает работоспособный код.
зы
файл Excel нужно предварительно упаковать
Да нет разобрался, в столбце 2 у меня установлены списки хоть они и пустые но выдается ошибка
Цитата:
"Данная команда не приемлема для перекрывающихся диапазонов."
изменил кода на столбец 1.
Код:
Range(.Cells(9, 1), .Columns(1).Find(".")).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Заработало.
Теперь другая ошибка если все ячейки уже столбца 1 заполнены то при тестировании идет противоречие на удаление и код выдает ошибку, то есть при заполненных ячейках выдается ошибка.
Цитата:
"Не найдено не одного условия, указанным условиям."
Как обойти данный момент.
normres вне форума Ответить с цитированием
Старый 12.10.2013, 21:32   #10
normres
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 10
По умолчанию

Или наверное поставить сообщение...
Если ячейки заполнены то выходит сообщение MsgBox
Что мол удаление возможно при пустых ячейках первой колонки, далее ОК и ничего не происходит.
Как его всунуть в код?

Последний раз редактировалось normres; 12.10.2013 в 21:34.
normres вне форума Ответить с цитированием
Ответ


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