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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2014, 16:01   #1
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию Диапазон 100 строк

Здравствуйте. Мне помогли, написали код:
Код:
Private Sub CommandButton4_Click()
 Dim sh3 As Worksheet
  Set sh3 = Worksheets(2)
  Dim i As Long
  Application.ScreenUpdating = False
  For i = 100 To 2 Step -1
    If sh3.Cells(i, 1) = TextBox2.Value Then sh3.Rows(i).Delete 'Задаем условие в каком случае удалить
  Next
  Application.ScreenUpdating = True
  TextBox2.Text = "" 'Удаляем текст из TextBox2 после удаления из диапазона
End Sub
Строка с необходимым текстом удаляется, но и уменьшается диапазон. Что добавить в код, чтобы диапазон не менялся (был 100 строк) или как добавить пустую строку под последней заполненной ячейкой в диапазоне?
Вадим12091965 вне форума Ответить с цитированием
Старый 11.10.2014, 16:17   #2
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Код:
If sh3.Cells(i, 1) = TextBox2.Value Then sh3.Rows(i).Delete: sh3.Rows(100).Insert
ShAM66 вне форума Ответить с цитированием
Старый 11.10.2014, 16:18   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
но и уменьшается диапазон
какой диапазон?
надо файл смотреть


попробуйте так:
Код:
Private Sub CommandButton4_Click()
 Dim sh3 As Worksheet
  Set sh3 = Worksheets(2)
  Dim i As Long
  Application.ScreenUpdating = False
  For i = 100 To 2 Step -1
    If sh3.Cells(i, 1) = TextBox2.Value Then  'Задаем условие в каком случае удалить
       sh3.Rows(i).Delete
       sh3.rows(100).insert ' добавляем пустую строку
    END IF
  Next
  Application.ScreenUpdating = True
  TextBox2.Text = "" 'Удаляем текст из TextBox2 после удаления из диапазона
End Sub
PS: если не там вставлять будет - поменяйте 100 на 99 или 101
EducatedFool вне форума Ответить с цитированием
Старый 11.10.2014, 17:40   #4
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Спасибо за помощь. Строки добавляются, но перестало работать удаление.
Вложения
Тип файла: rar 100.rar (30.8 Кб, 10 просмотров)
Вадим12091965 вне форума Ответить с цитированием
Старый 11.10.2014, 20:00   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

господа, а если ничего не удалять и не вставлять а просто
Код:
If sh3.Cells(i, 1) = TextBox2.Value Then  sh3.Rows(i).clearcontents
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 12.10.2014, 11:10   #6
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Цитата:
Сообщение от Вадим12091965 Посмотреть сообщение
перестало работать удаление.
Посмотрите внимательнее какая кнопка с каким листом и каким диапазоном работает. Я, например, не понял: что, когда, где должно удаляться.
ShAM66 вне форума Ответить с цитированием
Старый 12.10.2014, 11:13   #7
ShAM66
Форумчанин
 
Регистрация: 24.02.2012
Сообщений: 160
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
господа, а если ничего не удалять и не вставлять а просто
Код:
If sh3.Cells(i, 1) = TextBox2.Value Then  sh3.Rows(i).clearcontents
Тогда образуются "дыры" (пустые строки внутри диапазона). ИМХО, такого ТС не нужно.
ShAM66 вне форума Ответить с цитированием
Старый 12.10.2014, 11:43   #8
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Спасибо. Все работает, но остается пустая строка, которая не нужна.

В предыдущем коде работает первое удаление как должно быть, а следующее удаление происходит только на листе, на форме удаленное наименование присутствует. Возможно как-то прописать обновление формы. И еще: на листе количество строк пополняется (так как нужно), а в диспетчере имен список все равно сокращается.

Во вложении последний вариант - ххх.
Предыдущий - хх.
Вложения
Тип файла: rar ххх.rar (30.9 Кб, 11 просмотров)
Тип файла: rar хх.rar (31.3 Кб, 7 просмотров)
Вадим12091965 вне форума Ответить с цитированием
Старый 12.10.2014, 16:55   #9
Вадим12091965
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 143
По умолчанию

Порылся как обновить форму. Может сделал колхозно, но работает:
Код:
Private Sub CommandButton4_Click()
 Dim sh3 As Worksheet
  Set sh3 = Worksheets(2)
  Dim i As Long
  Application.ScreenUpdating = False
  For i = 100 To 2 Step -1
    If sh3.Cells(i, 1) = TextBox2.Value Then 
       sh3.Rows(i).Delete
       sh3.Rows(99).Insert 
    End If
  Next
  Application.ScreenUpdating = True
     TextBox2.Text = ""
   Unload UserForm1
   UserForm1.Show
End Sub
Вадим12091965 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поставить защиту на диапазон строк brik Microsoft Office Excel 5 29.04.2014 21:02
Как в паскале указать диапазон чисел от 1 до 10 в степени 100 Afroditaa Помощь студентам 1 22.11.2012 20:41
Задать диапазон ограниченый номерами строк и столбов Severny Microsoft Office Excel 5 12.09.2011 11:12
Выделить диапазон строк vefer Microsoft Office Excel 6 03.02.2011 13:10
Снять/защитить диапазон с учетом добавления строк dzv Microsoft Office Excel 8 08.02.2010 10:29