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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2009, 23:52   #1
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию Возвращать значение

Здравствуйте ВСЕМ!
У меня вопрос:
У меня имеется код, который находит в листе(в таблице) ячейку с определённым значением(например, слово в ячейке "ИТОГО"), эта самая ячейка с этим словом постоянно меняет "своё местоположение", то есть её место на листе НЕ фиксировано! Вот код,который его находит:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range
Set r = ActiveSheet.UsedRange.Find("ИТОГО", , xlValues, xlWhole)
Cells(r.Row, 3) = "" 'ВОТ ЭТА ЯЧЕЙКА!!!
End Sub
известно только то, что столбец постоянно третий, а вот строка меняется,поэтому такой код!
вопрос: Что мне набить в этот код, чтобы если человек захочет изменить слово в этой ячейке или очистить её, что значение "ИТОГО" обратно возращалось, то есть чтобы человек не смог изменить содержимое этой ячейки?
ну или хотя бы как её защитить, чтоб вообще человек не смог выделить её?
Заранее спасибо!
Артур Иваныч вне форума Ответить с цитированием
Старый 19.12.2009, 00:28   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Мне кажется тут можно сделать так

1) Выделить все ячейки на листе, щёлкнуть правой клавишей мыши, выбрать "Формат ячеек...", зайти в вкладку "Защита" и снять галочку "Защищаемая ячейка"
2) Выделить ячейку с Итого, щёлкнуть по ней правой клавишей мыши, выбрать "Формат ячеек...", зайти в кладку "Защита" и поставить галочку "Защищаемая ячейка"
3) зайти в меню "Сервис - Защита - Защитить лист...", отметить галочками все пункты, ввести любой пароль и нажать "ОК"

Теперь вы всё можете делать со всеми ячейками, но не сможете изменить ячейку с "ИТОГО"
Pavel55 вне форума Ответить с цитированием
Старый 19.12.2009, 00:30   #3
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
Мне кажется тут можно сделать так

1) Выделить все ячейки на листе, щёлкнуть правой клавишей мыши, выбрать "Формат ячеек...", зайти в вкладку "Защита" и снять галочку "Защищаемая ячейка"
2) Выделить ячейку с Итого, щёлкнуть по ней правой клавишей мыши, выбрать "Формат ячеек...", зайти в кладку "Защита" и поставить галочку "Защищаемая ячейка"
3) зайти в меню "Сервис - Защита - Защитить лист...", отметить галочками все пункты, ввести любой пароль и нажать "ОК"

Теперь вы всё можете делать со всеми ячейками, но не сможете изменить ячейку с "ИТОГО"
Чёт Вы давно на планете не были :-)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 19.12.2009, 00:33   #4
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

) к сожалению, времени свободного мало. Я там бываю, но отвечаю редко и под другим ником ) Просто там можно любой ник забить при ответе, а тут пришлось со своим залогиниться, чтобы ответить )
Pavel55 вне форума Ответить с цитированием
Старый 19.12.2009, 00:43   #5
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Ждём, скучаем :-)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 19.12.2009, 01:09   #6
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Ещё можно попробовать так
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(ActiveCell, Columns(3)) Is Nothing Then
        If UCase(ActiveCell) = "ИТОГО" Then
            Application.EnableEvents = False
            ActiveCell.Offset(0, 1).Select
            Application.EnableEvents = True
        End If
    End If
End Sub
При выделении ячейки с Итого курсор будет перескакивать на соседнюю справа ячейку. Но этот способ хуже, т.к. можно выделить несколько ячеек вместе с Итого и удалить (очистить) их
Pavel55 вне форума Ответить с цитированием
Старый 19.12.2009, 01:13   #7
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Цитата:
Сообщение от Serge 007 Посмотреть сообщение
Ждём, скучаем :-)
Вы мне льстите ) На планете и без меня очень много профессионалов, которые знают гораздо больше меня ) Я бы очень хотел, чтобы свободного времени было больше и я мог бы уделять его Планете.
Pavel55 вне форума Ответить с цитированием
Старый 19.12.2009, 09:53   #8
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

Спасибо
но всё это не то(
не пашет
Артур Иваныч вне форума Ответить с цитированием
Старый 19.12.2009, 12:46   #9
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Что вариант с защитой листа не работает? Человек всё равно может удалить слово "Итого" в ячейке?
Pavel55 вне форума Ответить с цитированием
Старый 19.12.2009, 19:00   #10
Артур Иваныч
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 138
По умолчанию

да я что-то не заметил
что этот код делает((
чёт как-то мёртво
Артур Иваныч вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что будет возвращать функция при различных pos vasyapupkin Общие вопросы C/C++ 4 03.11.2009 20:48
Значение операторов [ и ] Ivan_32 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.11.2008 15:50
значение из подстроки GazimagomedovM Помощь студентам 2 10.07.2008 08:50
Как создать обратную функцию, которая из уникального номера будет возвращать строку? SkAndrew Общие вопросы Delphi 8 06.04.2008 21:10
среднее значение tonic Microsoft Office Excel 1 04.01.2008 00:20