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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2011, 11:19   #1
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию Удаление всего кроме формул

Добрый день!
Попробывал написать макрос который бы удалял все значения константы, текст, даты.

Код:
Sub УдалениеКромеФормул()
    Set IRange = Selection
    For Each ICell In IRange
        If ICell <> Formula Then ICell.ClearContents
    Next
End Sub
Работает, но как-то коряво. "Неформулы" удаляет, но когда в диапазоне только формулы то удаляет и формулу в первой ячейке.
Помогите усовершенствовать макрос. Или он в корне не правильный?
В идеале хочу создать макрос который бы удалял по формату ячейки (все что перечислено в "Формате ячейки" включно с собственным форматом). Но это на будущее, пока бы только с этим разобраться.
Severny вне форума Ответить с цитированием
Старый 12.07.2011, 11:34   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Попробуйте проще(и быстрей):
Код:
Sub УдалениеКромеФормул() 
      on error resume next' Это если констант и так нету:-)
      Selection.SpecialCells(2, 23).ClearContents
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 12.07.2011 в 11:37.
kuklp вне форума Ответить с цитированием
Старый 12.07.2011, 11:38   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

> макрос который бы удалял все значения константы, текст, даты.
Код:
Sub УдалениеКонстант()
On Error Resume Next
Intersect(Selection.SpecialCells(xlCellTypeConstants), Selection).ClearContents
End Sub
Почему не просто
Код:
Selection.SpecialCells(xlCellTypeConstants).ClearContents
Потому что в этом случае, если выделена одна ячейка, будет обработан весь лист.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 12.07.2011, 12:28   #4
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

kuklp, Казанский
Спасибо за помощь, буду пробывать создать то что описывал в шапке.
Severny вне форума Ответить с цитированием
Старый 12.07.2011, 14:27   #5
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Подскажите, что в коде делает выделеное жирным?
Код:
Intersect(Selection.SpecialCells(xlCellTypeConstants), Selection).ClearContents
Severny вне форума Ответить с цитированием
Старый 12.07.2011, 14:32   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
что в коде делает выделеное жирным?
Ставим курсор на слово SpecialCells, и нажимаем F1
В справке всё подробно расписано.
http://www.ozgrid.com/VBA/special-cells.htm
EducatedFool вне форума Ответить с цитированием
Старый 12.07.2011, 15:35   #7
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Спасибо, будем разбираться!
Severny вне форума Ответить с цитированием
Старый 12.07.2011, 16:16   #8
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

Продолжая тему:

Код:
Sub ФормаУдаления()
    UserForm1.Show
    If (UserForm1.CheckBox1(1).Value = 1) Then
        On Error Resume Next
        Intersect(Selection.SpecialCells(xlCellTypeNumbers), Selection).ClearContents
    End If
    If (UserForm1.CheckBox2(1).Value = 1) Then
        On Error Resume Next
        Intersect(Selection.SpecialCells(xlCellTypeData), Selection).ClearContents
    End If
End Sub
Это форма для выбора в небольшой форме Даты или Числа, что удалять.
Форма выскакивает, но не удаляет

Последний раз редактировалось Severny; 12.07.2011 в 16:25. Причина: Правил код
Severny вне форума Ответить с цитированием
Старый 12.07.2011, 16:28   #9
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Правильно не удаляет. Откуда ей знать какой Selection Вы имеете ввиду. На форме свои Selection. Без файла могу только посоветовать перед Selection указывать лист с Selection.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 12.07.2011, 16:34   #10
Severny
Форумчанин
 
Регистрация: 07.10.2010
Сообщений: 144
По умолчанию

В файле я уже последовал Вашему совету, видать не правильно понял, потому что не удаляет.
Вложения
Тип файла: rar Тестовая книга.rar (17.0 Кб, 11 просмотров)
Severny вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление формул Olya1985 Microsoft Office Excel 1 27.03.2011 11:51
Сворачивание всех окон кроме моего. tbeca@mail.ru Общие вопросы Delphi 2 17.01.2010 19:17
Способы деления чисел кроме DIV CynicVest Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 29.10.2009 15:11
Кроме Indy GragDen Работа с сетью в Delphi 8 03.10.2007 15:51