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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.12.2008, 12:16   #11
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

понятно... повиснет. он не висит, он считает, у 2007 офиса размер листа 1 048 576 строк и 16 384 столбца, умножим две эти цифры столько ячеек. У вас уже были примеры, как обрабатывать не все ячейки листа а только те, что нужны...
удачи
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 04.12.2008, 12:22   #12
evutk
 
Регистрация: 03.12.2008
Сообщений: 7
По умолчанию

Я пытался таким образом сделать, но лочит в итоге абсолютно все:

Sub ProtectYellow()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange.Cells
If cell.Interior.ColorIndex = 6 Then
cell.Locked = True: Exit Sub
End If
If cell.Interior.ColorIndex = 3 Then
cell.Locked = True: Exit Sub
End If
Next
ActiveSheet.Protect UserInterfaceOnly:=True, Password:="456"

End Sub

---
EducatedFool,
к сожалению, с Вашим вариантом та же проблема происходит - лок на все ячейки идет :\
evutk вне форума
Старый 04.12.2008, 13:19   #13
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

может предварительно защиту с листа снять?
и Sub ProtectYellow надо переименовывать - уже не только желтые защищаются. Плохо когда название процедуры не соответствует выполняемой задаче.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 04.12.2008, 13:20   #14
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
EducatedFool,
к сожалению, с Вашим вариантом та же проблема происходит - лок на все ячейки идет :\
Что значит на все?
Проверял несколько раз - блокируются только ячейки выбранных цветов.

Если Вы берете пустой лист, и красите на нём пару ячеек, то макрос обработает лишь малую часть листа (так как основная часть ячеек находится в неиспользуемой области.

Если же на листе есть данные, в области данных блокируются только те ячейки, цвет которых прописан в макросе.

Вот еще раз пример макроса:
Создайте новую книгу Excel, и запустите сначала макрос PaintCells, а потом ЗащититьЦветныеЯчейки

Ну и проверяйте.
Заблокированы только ячейки 4-х выбранных цветов (с цифрами от 4 до 7)

Код:
Sub ЗащититьЦветныеЯчейки() ' проверено в Excel 2003
    ActiveSheet.Unprotect
    [e40] = "текст": [k66] = 45687
    Dim cell As Range
    For Each cell In ActiveSheet.UsedRange.Cells    ' перебираем все ячейки в используемой области листа
        Select Case cell.Interior.ColorIndex
            Case 4, 5, 6, 7: cell.Locked = True    ' блокируем ячейки этих цветов
            Case Else: cell.Locked = False ' остальные разблокируем
        End Select
    Next
    ActiveSheet.Protect UserInterfaceOnly:=True
End Sub

Sub PaintCells()    ' красим некоторые ячейки в разные цвета
    ActiveSheet.UsedRange.Clear
    For i = 4 To 20
        For j = 6 To 32
            Cells(j, i).Interior.ColorIndex = (i + j) Mod 10
            Cells(j, i) = (i + j) Mod 10
        Next
    Next
End Sub

Sub СнятьЗащитуЛиста()
    ActiveSheet.Unprotect
End Sub
EducatedFool вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добрый день и снова вопрос по защите) Wasily Microsoft Office Excel 17 18.06.2008 10:26
Excel max 256 строк VS user надо 300 строк Exo Microsoft Office Excel 3 10.01.2008 17:14
HELP!Си - программа для работы со строками + сумма строк в матрице! DUPLET Помощь студентам 1 20.12.2007 21:16
подписать столбцы в компоненте StringGrid и убрать поля для надписи строк? фЁдОр Помощь студентам 35 12.09.2007 14:13
Совмещение строк по ячейкам в Excel asfa Microsoft Office Excel 6 16.03.2007 01:13