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

Вход

Регистрация

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

 

= Мир MS Excel/Нахождение и удаление данных из массива - Мир MS Excel

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

Excel 2016
Здравствуйте! Помогите построить макрос. Нужно на листе2 найти строку с данными и удалить их. Строка должна начинаться со значения идентичного значению в ячейке А2 на листе1.
Написал такой код в общем модуле:
[vba]
Код
Sub RemoveDate(sStr As String)
Dim Range As Range
Dim a()
Dim b As Long
Dim c As Long
    With Лист2
        b = .UsedRange.Rows.Count
        a = .Range("A:A" & b).Value
            For c = 1 To b
              If a(c, 1) = sStr Then
                    .Range(Cells(c, 1), Cells(c, 4)).ClearContents
                Exit Sub
              End If
            Next c
    End With
End Sub
[/vba]

И такой макрос в модуле листа:
[vba]
Код
Sub Remove()
Call RemoveDate(Range("A2").Value)
End Sub
[/vba]
Но выдает ошибку.
И второй вопрос - является ли такой код оптимальным для этой цели, или можно как то по другому сделать без циклов?
К сообщению приложен файл: ___.xlsm(20Kb)
 
Ответить
СообщениеЗдравствуйте! Помогите построить макрос. Нужно на листе2 найти строку с данными и удалить их. Строка должна начинаться со значения идентичного значению в ячейке А2 на листе1.
Написал такой код в общем модуле:
[vba]
Код
Sub RemoveDate(sStr As String)
Dim Range As Range
Dim a()
Dim b As Long
Dim c As Long
    With Лист2
        b = .UsedRange.Rows.Count
        a = .Range("A:A" & b).Value
            For c = 1 To b
              If a(c, 1) = sStr Then
                    .Range(Cells(c, 1), Cells(c, 4)).ClearContents
                Exit Sub
              End If
            Next c
    End With
End Sub
[/vba]

И такой макрос в модуле листа:
[vba]
Код
Sub Remove()
Call RemoveDate(Range("A2").Value)
End Sub
[/vba]
Но выдает ошибку.
И второй вопрос - является ли такой код оптимальным для этой цели, или можно как то по другому сделать без циклов?

Автор - Mexo
Дата добавления - 06.11.2017 в 08:03
Gustav Дата: Понедельник, 06.11.2017, 08:24 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1459
Репутация: 556 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Надо "A1:A" во фрагменте: Range("A:A" & b).Value


Мой tip box - яд 41001663842605
 
Ответить
СообщениеНадо "A1:A" во фрагменте: Range("A:A" & b).Value

Автор - Gustav
Дата добавления - 06.11.2017 в 08:24
Wasilich Дата: Понедельник, 06.11.2017, 17:32 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1209
Репутация: 321 ±
Замечаний: 0% ±

2003
Нужно на листе2 найти строку с данными и удалить их.

Может так?
[vba]
Код
Sub www()
  Dim x$, b&, c&
  x = Range("A2")
  With Sheets("Лист2")
      b = .UsedRange.Rows.Count
      For c = 1 To b
        If .Cells(c, "A") = x Then
         .Range(.Cells(c, 1), .Cells(c, 4)).ClearContents
        End If
      Next c
  End With
End Sub
[/vba]
 
Ответить
Сообщение
Нужно на листе2 найти строку с данными и удалить их.

Может так?
[vba]
Код
Sub www()
  Dim x$, b&, c&
  x = Range("A2")
  With Sheets("Лист2")
      b = .UsedRange.Rows.Count
      For c = 1 To b
        If .Cells(c, "A") = x Then
         .Range(.Cells(c, 1), .Cells(c, 4)).ClearContents
        End If
      Next c
  End With
End Sub
[/vba]

Автор - Wasilich
Дата добавления - 06.11.2017 в 17:32
Mexo Дата: Вторник, 07.11.2017, 07:16 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Заработало, Спасибо!
 
Ответить
СообщениеЗаработало, Спасибо!

Автор - Mexo
Дата добавления - 07.11.2017 в 07:16
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Нахождение и удаление данных из массива (Макросы/Sub)
Страница 1 из 11
Поиск:

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