Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск значения. Если есть то.... , если нет, то конец / 5 сообщений из 5, страница 1 из 1
30.03.2007, 16:38:41
    #34428096
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения. Если есть то.... , если нет, то конец
Всем привет! Надо написать код. Если в первой строке (в любой из ячеек) находится нужное значение, то выполнение кода должно продолжаться дальше. Если такого значения не существует, то должно выскакивать предупреждение
Код: plaintext
MsgBox ("Не найдено")
и выполнение кода должно прекратиться.
Я сделал так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
For j =  1  To  256 
If Cells( 1 , j).Value = "p_3462849" Then adr = Cells( 1 , j).Address(RowAbsolute:=False)
Next j

kol = Mid(adr,  2 , Len(adr) -  2 )
stroka = kol & ":" & kol

'MsgBox kol
'MsgBox stroka

Columns(stroka).Cut
Columns("E:E").Insert Shift:=xlToRight
Так работает если нужное значение находится.
Как присобачить сообщение о не найденном значении?
...
Рейтинг: 0 / 0
30.03.2007, 16:46:36
    #34428132
udgeen69
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения. Если есть то.... , если нет, то конец
dim finded as boolean
For j = 1 To 256
If Cells(1, j).Value = "p_3462849" Then
finded=true
<если нашли, то можно выйти используя exit for>
endif
Next j
if finded then
msgbox "Нашли"
else:
msgbox "не нашли"
<тут обработка если не нашли>

endif

Тока этот метод не считает кол-ва совпадений, надо добавлять переменную счетчик
...
Рейтинг: 0 / 0
30.03.2007, 16:47:26
    #34428138
udgeen69
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения. Если есть то.... , если нет, то конец
Exit Sub ставь на событие не найдено, если надо выйти из макроса
...
Рейтинг: 0 / 0
30.03.2007, 16:58:24
    #34428174
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения. Если есть то.... , если нет, то конец
Сделал так. И все работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim finded As Boolean
For j =  1  To  256 
If Cells( 1 , j).Value = "p_3462849" Then
finded = True
adr = Cells( 1 , j).Address(RowAbsolute:=False)

End If
Next j

If finded = False Then
MsgBox "Не НАЙДЕНО"
Exit Sub

Else:

kol = Mid(adr,  2 , Len(adr) -  2 )
stroka = kol & ":" & kol
Columns(stroka).Cut
Columns("E:E").Insert Shift:=xlToRight
Огромное спасибо
...
Рейтинг: 0 / 0
30.03.2007, 17:05:01
    #34428204
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск значения. Если есть то.... , если нет, то конец
Так можно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub sad()

kol =  0 
 For j =  6  To  256 
  If Cells( 1 , j).Value = "p_3462849" Then kol = Cells( 1 , j).Column
 Next j

 If kol =  0  Then
   MsgBox ("Íå íàéäåíî")
   Exit Sub
 Else
  Columns(kol).Cut
  Columns( 5 ).Insert
 End If
 
End Sub

А если все столбцы нужно копировать, а не только последний попавшийся, то так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Sub sad2()

kol =  0 
 For j =  6  To  256 
  If Cells( 1 , j).Value = "p_3462849" Then
   kol = Cells( 1 , j).Column
   Columns(kol).Cut
   Columns( 5 ).Insert
  End If
 Next j

 If kol =  0  Then
   MsgBox ("Íå íàéäåíî")
   Exit Sub
 End If
 
End Sub
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Поиск значения. Если есть то.... , если нет, то конец / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]