Помогите с поиском

Программирование на Visual Basic for Applications
Dasty
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 28.10.2007 (Вс) 18:11

Помогите с поиском

Сообщение Dasty » 29.10.2007 (Пн) 0:04

Всем Доброго времени суток!
Простите за возможно глупый вопрос, я не программист но кой чего пришлось писать
Задача у меня следующая: есть экслевская таблица в виде:

А

Каркас(А)
Каркаса стен (Б)
**ОТМ_1
**ОТМ_2
Каркас купола (В)

Я прохожусь по данному столбцу следующим кодом:
Код: Выделить всё

endCount = Excel.ActiveCell.Range("A1").End(xlToRight).Row

For startCount = 1 To endCount
    Set sub_master_products1 = master_product1.Products
    If ws.Range("A" & startCount ) = "**" Then
    Set sub_master_product1 = sub_master_products1.AddNewProduct(" ")
    End If
    Set sub_master_product1 = sub_master_products1.AddNewProduct(ws.Range("A" & startCount ))
Next startCount


Беда в том что строка:
Код: Выделить всё
If ws.Range("A" & startCount ) = "**" Then

не работает как мне надо, а именно опознавать ячейку только по двум первым символам т.е. **, подскажите как сие реализовать, указание чёткого имени не допустимо т.е. постоянны только **, и еще как можно затем получить целиком значение ячейки начинающейся на ** ??

простите если выразился не ясно....

СПАСИБО ВСЕМ!

-EV-
Начинающий
Начинающий
 
Сообщения: 1
Зарегистрирован: 29.10.2007 (Пн) 1:51

Сообщение -EV- » 29.10.2007 (Пн) 2:11

и какое значение получает EndCount?
Если поиск ведется по столбцу, то почему
Код: Выделить всё
End(xlToRight)
а не
Код: Выделить всё
End(xlDown)

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 29.10.2007 (Пн) 4:55

1.
Код: Выделить всё
If InStr(1, ws.Range("A" & startCount), "**") <> 0 Then

Также вы можете определять по ОТМ_, например, если что

2.
Код: Выделить всё
myZnachenie = ws.Range("A" & startCount ).value

Ну а для определения последней заполненой ячейки диапазона лучше пробуйте это:
Код: Выделить всё
endCount = Range("A1").SpecialCells(xlLastCell).Row

HandKot
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 283
Зарегистрирован: 28.06.2006 (Ср) 13:34
Откуда: Sergiev Posad

Сообщение HandKot » 29.10.2007 (Пн) 9:30

это имелось в виду ?
так
Код: Выделить всё
    If Range("A1").Value Like "[*][*]*" Then Debug.Print "1"
    If Range("A2").Value Like "[*][*]*" Then Debug.Print "2"
    If Range("A3").Value Like "[*][*]*" Then Debug.Print "3"

или так
Код: Выделить всё
    If Left(Range("A1").Value, 2) = "**" Then Debug.Print "1"
    If Left(Range("A2").Value, 2) = "**" Then Debug.Print "2"
    If Left(Range("A3").Value, 2) = "**" Then Debug.Print "3"
I Have Nine Lives You Have One Only
THINK!

Dasty
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 28.10.2007 (Вс) 18:11

Сообщение Dasty » 29.10.2007 (Пн) 18:07

Спасибо за ответы Все получилось!
Если можно с Вашего позволения, еще один вопрос
Код: Выделить всё
For startCount = 1 To endCount
    Set sub_master_products1 = master_product1.Products
    If ws.Range("A" & startCount ) = "**" Then
    Set sub_master_product1 = sub_master_products1.AddNewProduct(" ")
    End If
    Set sub_master_product1 = sub_master_products1.AddNewProduct(ws.Range("A" & startCount ))
Next startCount


как заставить проделать следующее я так понимаю, что ws.Range("A" & startCount ) возвращает текущую найденную ячейкук примеру **ОТМ_1, а как мне в теле цикла получить предыдущую ячейку т.е. Каркаса стен (Б) ?
Еще Раз Спасибо!

bi-lya
Обычный пользователь
Обычный пользователь
 
Сообщения: 87
Зарегистрирован: 07.08.2006 (Пн) 15:36

Сообщение bi-lya » 30.10.2007 (Вт) 8:29

Так как получилось-то? :D
Отталкиваясь от ws.Range("A" & startCount )?
Код: Выделить всё
myZnachenie = ws.Range("A" & startCount - 1).value

Наверное так


Вернуться в VBA

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

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

    TopList