Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Вопрос по оператору сравнения


Автор: Shellcom 14.4.2004, 15:40
Кто подскажет, возможно-ли как нибудь прописать в макросе такой блок
и если да, то как?
Есть список наименований в экселе и существуют листы с именами из этого списка наименований.
Если программа не обнаружит листа с именем из списка, то нужно сообщение. А так ошибку лепит.
Если есть лист с именем в списке то программа работает.

Function Perenos() '
Dim Stroka, Stolbec, Naim_BD
Stroka = 6
Stolbec = 2
Naim_BD = Worksheets("Прайс").Cells([Stroka], [Stolbec])
Do While Worksheets("Прайс").Cells([Stroka], [Stolbec]) <> ""
'Ищет конец списка а в процессе идёт проверка
If Sheets(Naim_BD).Name = Naim_BD Then 'Проблемное место!!!!
MsgBox "ok!"
Else
MsgBox "Нет такого листа!"
End If
Stroka = Stroka + 1
Naim_BD = Worksheets("Прайс").Cells([Stroka], [Stolbec])
Loop
Msgbox "Конец"
End Function


Автор: Guest 14.4.2004, 16:34
Код

Function Perenos()
Dim Stroka, Stolbec As Integer
Dim Naim_BD As String

Stroka = 6
Stolbec = 2

Naim_BD = Worksheets("Прайс").Cells(Stroka, Stolbec)

Do While Worksheets("Прайс").Cells(Stroka, Stolbec) <> ""

If Sheets(Naim_BD).Name = Naim_BD Then
 On Error GoTo errObr:
 MsgBox "ok!"
End If
Stroka = Stroka + 1
Naim_BD = Worksheets("Прайс").Cells(Stroka, Stolbec)

Loop

MsgBox "Конец"

errObr:
MsgBox "Нет такого листа!"

End Function


Только пару замечаний
1. Это нифига не Function , а таки Sub wink.gif
2. Не элегантный код - можно вполней обойтись и без If wink.gif

Автор: Shellcom 14.4.2004, 17:16
Спасибо!
Получилось сразу.
Это всё таки Function, просто показал кусок.
Лабаю програмку а в качестве БД у меня листы. И если в список добавится новый элемент, то будет создан новый лист для него с таким же именем.
А код неэлегантный, потому что самоучка.
Спасибо Guest!!! biggrin.gif

Автор: Shellcom 15.4.2004, 11:00
Ещё вопросик!
Эта строка перемещает лист "Naim_BD" третьим по расположению.

Sheets(Naim_BD).Move After:=Sheets(3)

А есть-ли команда отпраляющая лист в конец?
Добавлено @ 11:01
Забыл добавить!
Независимо от количества листов! Так как в конец нужно отправлять вновь созданные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)