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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2015, 09:12   #1
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию Поиск строки, удаление данных в ней, затем скрытие

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

Есть макрос

Код:
Sub -Elias-()
    Rows("12:12").Select
    Selection.Delete Shift:=xlUp
 
    Cells.Find(What:="IRP", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveSheet.Unprotect
    ActiveSheet.Pictures.Insert( _
        "C:\Users\Elias.png").Select
    Selection.ShapeRange.IncrementLeft 17.25
    Selection.ShapeRange.IncrementTop -18#
    Range("L86").Select
    ActiveWindow.SmallScroll Down:=-70

    Columns("C:C").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("I:I").EntireColumn.AutoFit 
End Sub

Необходимо после удаления 12-й строки найти слово "Тратата", если оно есть, стереть цифры отмеченные красным и скрыть строку и продолжить действия макроса (вставить картинку и подогнать размер столбцов), если нет "Тратата", то пройти мимо вставить картинку и подогнать столбцы по размеру текста.

Помогите решением. Спасибо.
Изображения
Тип файла: jpg макрос.jpg (22.4 Кб, 121 просмотров)
-Elias- вне форума Ответить с цитированием
Старый 30.09.2015, 01:27   #2
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию

Я покопался и сделал вывод последовательность:

1 ActiveSheet.Unprotect 'снимаю защиту листа

2 Rows("12:12").Select
Selection.Delete Shift:=xlUp 'удаляю строку 12

3 Cells.Find = myColumns.Find(What:="тратата", LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False) 'ищем "тратата"

2 понял что это делает offset, но не понял как 'выделяем диапазон справа от "тратата"

3 тоже не понял 'удаляем выделенный диапазон

4 и это не понял, кроме Hidden 'скрываем строку

11 это в макросе есть 'ищем IRP
12 и это есть 'вставляем картинку
-Elias- вне форума Ответить с цитированием
Старый 30.09.2015, 08:48   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

есть подозрение что Вы путаете понятия "удалить диапазон" и "очистить диапазон"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.09.2015, 14:23   #4
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию

я имел ввиду очистить, чтобы формула дальнейшая не сбилась.
-Elias- вне форума Ответить с цитированием
Старый 01.10.2015, 00:47   #5
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию

Нашел я рабочий макрос подправил чутка его (он удалял, а не очищал содержимое) и заработало.
Осталось скрывать строки, в которых очистили содержимое.
Теперь код такой (может я по неопытности нагородил там.) Есть более простой вариант?:

Код:

Sub Procedure_2()

  
 
    Dim ra As Range, delra As Range, ТекстДляПоиска As String
    
    ActiveSheet.Unprotect                   ' снимаем защиту листа
    
    Rows("12:12").Select                    ' удаляем 12 - ую строку
    Selection.Delete Shift:=xlUp
    
    Application.ScreenUpdating = False    ' отключаем обновление экрана
 
    ТекстДляПоиска = "Тратата"  ' удаляем строки с таким текстом
    
      For Each ra In ActiveSheet.UsedRange.Rows   ' перебираем все строки в используемом диапазоне листа
   
   If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then   ' если в строке найден искомый текст
     
   If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)  ' добавляем строку в диапазон для удаления
           
        End If
    Next
    
   If Not delra Is Nothing Then delra.EntireRow.Clear   ' если подходящие строки найдены - очищаем их
   
 
   
     ТекстДляПоиска1 = "Тратата1"
     
      For Each ra In ActiveSheet.UsedRange.Rows   ' перебираем все строки в используемом диапазоне листа
   
   If Not ra.Find(ТекстДляПоиска1, , xlValues, xlPart) Is Nothing Then   ' если в строке найден искомый текст
     
   If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)  ' добавляем строку в диапазон для удаления
           
        End If
    Next
    
   If Not delra Is Nothing Then delra.EntireRow.Clear
    
   
   
   
    Cells.Find(What:="IRP", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    Cells.FindNext(After:=ActiveCell).Activate
    ActiveSheet.Pictures.Insert( _
        "C:\Users\User\Desktop\пикча.png").Select
    ActiveWindow.SmallScroll Down:=10
    Selection.ShapeRange.IncrementLeft 21#
    Selection.ShapeRange.IncrementTop -24#
    ActiveWindow.SmallScroll Down:=-100
    
    Columns("C:C").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("I:I").EntireColumn.AutoFit
 
End Sub

Последний раз редактировалось -Elias-; 01.10.2015 в 02:36. Причина: дополнение
-Elias- вне форума Ответить с цитированием
Старый 01.10.2015, 08:10   #6
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Код:
If Not delra Is Nothing Then delra.EntireRow.Clear: delra.EntireRow.Hidden = True
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 01.10.2015, 13:11   #7
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию

Цитата:
If Not delra Is Nothing Then delra.EntireRow.Clear: delra.EntireRow.Hidden = True
Спасибо большое. Все получилось.
Все дело в ":" оказалось. Я так понимаю, это знак последовательности действий?
-Elias- вне форума Ответить с цитированием
Старый 01.10.2015, 19:32   #8
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

имхо ":" ето понты. ":" позволяет писать команды в 1 строку и служит разделителем. Намного читабельнее писать каждую комманду с новой строки

Код:
If Not delra Is Nothing Then 
     delra.EntireRow.Clear
     delra.EntireRow.Hidden = True
End if
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 01.10.2015, 22:57   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

: - это не понты, это синтаксис Basic (альтернативный способ разделить операторы между собой)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 02.10.2015, 13:55   #10
-Elias-
Пользователь
 
Регистрация: 29.09.2015
Сообщений: 12
По умолчанию

Цитата:
Сообщение от AleksandrH Посмотреть сообщение
Код:
If Not delra Is Nothing Then 
     delra.EntireRow.Clear
     delra.EntireRow.Hidden = True
End if
Сейчас попробовал в этом виде. Не работает макрос. А вот через ":" нормуль функционирует))) Спасибо еще раз)
-Elias- вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строки и суммирование одинаковых данных в ней, реально ли реализовать через макрос? Just_07 Microsoft Office Excel 9 05.06.2012 00:00
Поиск данных в строке скрытие столбцов в которых нет совпадений Ivan Dulin Microsoft Office Excel 4 05.04.2012 00:46
Имеется строка из букв и цифр.Преобразовать так,чтобы сначала в ней шли все буквы,затем цифры Natalia91169 Помощь студентам 3 13.03.2012 09:00
Как создать базу данных и поиск по ней? doktorweb Помощь студентам 3 13.12.2010 23:24
Удаление/скрытие строк kzld Microsoft Office Excel 1 11.11.2010 20:44