Help! Выделение ячеек согласно условию

Программирование на Visual Basic for Applications
Bigfire
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.09.2004 (Чт) 9:52

Help! Выделение ячеек согласно условию

Сообщение Bigfire » 30.10.2004 (Сб) 14:47

Уважаемые специалисты по VBA!
Помогите, пожалуйста, с задачей:
В заданном диапазоне ячеек (один столбец) необходимо выделить ячейки, удовлетворяющие вводимому условию. Пример диапазона:
01.01.04
01.01.04
02.01.04
02.01.04
04.01.04
и т.д.
Например, условие: выделить ВСЕ ячейки, содержащие значания с 01.01.04 по 02.01.04. При использовании процедуры For Each...Next для данного примера выделяются все ячейки с 01.01.04 и только ПЕРВАЯ ячейка со значением 02.01.04. Если значения 1-го и 2-го условия одинаковы (например, с 01.01.04 по 01.01.04), выделяется также только первая ячейка с таким значением. Как выполнить условия полностью (т.е. выделить нужные ячейки)?
P.S. Применение автофильтра нежелательно.

работаю под Excel97.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 30.10.2004 (Сб) 14:57

Код недоделанной программы в студию.

Bigfire
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.09.2004 (Чт) 9:52

Сообщение Bigfire » 30.10.2004 (Сб) 15:21

Краткое пояснение: при нажатии на кнопку вызывается форма с 2-мя окошками для ввода условий (с ... по ...). При нажатии ОК программа должна выделить ВСЕ ячейки по условиям в диапазоне "Дата_заказа", затем выделяет полностью строки, соответствующие выделенным ячейкам.

Private Sub CommandButton1_Click()
Dim sSymbol1 As String
Dim sSymbol2 As String
Dim data1 As Variant
Dim data2 As Variant
Dim rngCopy As Range
Dim rngSel As Range
Dim nSelOffset As Integer
Dim nSelCount As Integer

sSymbol1 = TextBox1.Text
sSymbol2 = TextBox2.Text
If sSymbol1 = "" Then
TextBox1.SetFocus
MsgBox "Введите даты !", vbInformation
ElseIf sSymbol2 = "" Then
TextBox2.SetFocus
MsgBox "Введите даты !", vbInformation
Exit Sub
End If
If sSymbol1 <> "" And sSymbol2 <> "" Then

Me.Hide
Me.Tag = vbOK

For Each data1 In Range("Дата_заказа")
If data1 = sSymbol1 Then
data1.Select
Selection.Name = "sStart"
Exit For
End If
Next

For Each data2 In Range("Дата_заказа")
If data2 = sSymbol2 Then
data2.Select
Selection.Name = "sEnd"
Exit For
End If
Next
Range("sStart", "sEnd").Select

Set rngSel = Range("Список_зеркал")
Set rngCopy = Application.Intersect(rngSel, Selection)
nSelOffset = rngCopy.Row - rngSel.Row
Set rngCopy = rngCopy.EntireRow
nSelCount = rngCopy.Rows.Count
Application.Intersect(rngCopy, rngSel).Select
End If


End Sub

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 30.10.2004 (Сб) 15:41

x=txtCondition.Text 'присваиваем значение текстового поля с условием переменной
For i=1 to 20 'делаем цикл, можно и при помощи Do
If Sheet(1).Cells(i,1)=x Then 'если значение ячейки равно условию, то меняем ее цвет - в данном случае на желтый
Sheets(1).Cells(i, 1).Interior.Color = &HC0FFFF
End If
Next i
Век живи - век учись!
www.detal-plast.narod.ru


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 10

    TopList