Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Недочет в хорошем коде. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Недочет в хорошем коде. (Макросы/Sub)
Недочет в хорошем коде.
enchanter54 Дата: Четверг, 17.03.2016, 03:47 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Суть проблемы в том, что если ввести искомое значение например - 1, то макрос удаляет и 100 и 111 и т.д., тоже самое происходит и с другими числами. Можно как-то дописать его, чтоб он удалял четко заданное значение?
_______________________________________________________________________________________________________________________

Sub Del_SubStr()
Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
Dim lCol As Long 'номер столбца с просматриваемыми значениями
Dim lLastRow As Long, li As Long
Dim lMet As Long
Dim arr

sSubStr = InputBox("Укажите КОД клиента для удаления", "Запрос параметра", "")
If sSubStr = "" Then lMet = 0 Else lMet = 1
lCol = Val(InputBox("Оставьте число - 1 и подтвердите", "Запрос параметра", 1))
If lCol = 0 Then Exit Sub

lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
arr = Cells(1, lCol).Resize(lLastRow).Value
Application.ScreenUpdating = 0
Dim rr As Range
For li = 1 To lLastRow
If -(InStr(arr(li, lCol), sSubStr) > 0) = lMet Then
If rr Is Nothing Then
Set rr = Cells(li, 1)
Else
Set rr = Union(rr, Cells(li, 1))
End If
End If
Next li
If Not rr Is Nothing Then rr.EntireRow.Delete
Application.ScreenUpdating = 1
End Sub


Сообщение отредактировал enchanter54 - Четверг, 17.03.2016, 03:48
 
Ответить
СообщениеСуть проблемы в том, что если ввести искомое значение например - 1, то макрос удаляет и 100 и 111 и т.д., тоже самое происходит и с другими числами. Можно как-то дописать его, чтоб он удалял четко заданное значение?
_______________________________________________________________________________________________________________________

Sub Del_SubStr()
Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
Dim lCol As Long 'номер столбца с просматриваемыми значениями
Dim lLastRow As Long, li As Long
Dim lMet As Long
Dim arr

sSubStr = InputBox("Укажите КОД клиента для удаления", "Запрос параметра", "")
If sSubStr = "" Then lMet = 0 Else lMet = 1
lCol = Val(InputBox("Оставьте число - 1 и подтвердите", "Запрос параметра", 1))
If lCol = 0 Then Exit Sub

lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
arr = Cells(1, lCol).Resize(lLastRow).Value
Application.ScreenUpdating = 0
Dim rr As Range
For li = 1 To lLastRow
If -(InStr(arr(li, lCol), sSubStr) > 0) = lMet Then
If rr Is Nothing Then
Set rr = Cells(li, 1)
Else
Set rr = Union(rr, Cells(li, 1))
End If
End If
Next li
If Not rr Is Nothing Then rr.EntireRow.Delete
Application.ScreenUpdating = 1
End Sub

Автор - enchanter54
Дата добавления - 17.03.2016 в 03:47
enchanter54 Дата: Четверг, 17.03.2016, 04:05 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
А всё разобрался. СПС всем.
[moder]Поздравляю.
Но 2 замечания Вы за эту тему поймали.
Нарушение п.2 и п.3 Правил форума в части тегов.


Сообщение отредактировал _Boroda_ - Четверг, 17.03.2016, 09:40
 
Ответить
СообщениеА всё разобрался. СПС всем.
[moder]Поздравляю.
Но 2 замечания Вы за эту тему поймали.
Нарушение п.2 и п.3 Правил форума в части тегов.

Автор - enchanter54
Дата добавления - 17.03.2016 в 04:05
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Недочет в хорошем коде. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!