Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проверить лист на существование VBA / 25 сообщений из 45, страница 1 из 2
24.09.2010, 16:41
    #36865374
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Всем привет.

Скажу сразу, в VB- я не очень.
Передо мной стоит задача. Есть чекбоксы, которыми мы отмечаем какие листы будем использовать.
Нужно написать цикл который бы проверял наличие листа по заданному названию(критерию). Листы задаются так - 03,10 , где 03-это Март, 10- 2010 год. (чекбокс 3 в колонке 2010 -см.картинку)
И если листа нет, то
Код: plaintext
CheckBox(n).enabled = false
Чекбоксы идут с checkbox1 по checkbox24 checkbox25-2009год, checkbox26- 2010год. Можете обзывать как хотите, не принципиально, догадаюсь :)
До чего до чего додумался, может и неверно. :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Function listExist() As Boolean
Dim strName As String
Dim i, k As Integer
For i =  1  To  12 
    For k =  9  To  10 
    strName = "0" + CStr(i) + ";0" + Cstr(k)
    On Error Resume Next
    listExist = WorkSheets(strName).Index
    Next k
Next i        
End Function
Спасибо!
...
Рейтинг: 0 / 0
24.09.2010, 16:45
    #36865381
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamx,

Можно пойти от обратного, перебрать все листы в книге и посмотреть их имена.
Но это - вполне себе вариант.
...
Рейтинг: 0 / 0
24.09.2010, 16:46
    #36865387
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Только непонятно, что должна вернуть эта функция
...
Рейтинг: 0 / 0
24.09.2010, 16:51
    #36865397
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
думаю, она должна вернуть переменной strName номер листа и сказать есть он или нет. хзхз :)
...
Рейтинг: 0 / 0
24.09.2010, 16:53
    #36865400
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.ProТолько непонятно, что должна вернуть эта функция

fedoamxНужно написать цикл который бы проверял наличие листа по заданному названию(критерию)

Если есть критерий, то не нужен цикл. Если есть цикл - то проверка идет не одного, а всех чекбоксов и результат должен быть каким-то другим.
...
Рейтинг: 0 / 0
24.09.2010, 16:55
    #36865405
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxдумаю, она должна вернуть переменной strName номер листа и сказать есть он или нет. хзхз :)
Тогда
а) Если вернуть номер листа, то причем тут тогда strName?
б) У функции должен быть параметр
в) Цикл не нужен
...
Рейтинг: 0 / 0
24.09.2010, 17:15
    #36865436
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Pro,

блин, видимо я сути не понимаю. А как без цикла? и strName разве не является параметром?
...
Рейтинг: 0 / 0
24.09.2010, 17:16
    #36865439
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
strName - так задается название листа.
...
Рейтинг: 0 / 0
24.09.2010, 17:18
    #36865444
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Код: plaintext
1.
2.
3.
4.
5.
6.
Function SheetIndex(iYear As Integer iMonth As Integer) As Integer

SheetIndex=- 1 
On Error Resume Next
SheetIndex = WorkSheets("0" + CStr(iMonth) + ";0" + Cstr(iYear)).Index
    
End Function
...
Рейтинг: 0 / 0
24.09.2010, 17:20
    #36865449
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamx,

Прежде, чем писать код, сформулируйте, что вы хотите (вход-выход)
...
Рейтинг: 0 / 0
24.09.2010, 17:24
    #36865453
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Pro,

Спасибо. а как эту функцию с чекбоксами связать?
...
Рейтинг: 0 / 0
24.09.2010, 17:24
    #36865454
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxstrName разве не является параметром?

http://psbatishev.narod.ru/vb/v054.htm

Тут параметры называют аргументами - в данном случае это синонимы
...
Рейтинг: 0 / 0
24.09.2010, 17:26
    #36865457
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxСпасибо. а как эту функцию с чекбоксами связать?
Как я уже сказал - определитесь, что вы хотите.
Вы хотели функцию проверки наличия листа и получения его индекса - вот она.

Теперь сформулируйте, что значит "связать" в вашем понимании.
...
Рейтинг: 0 / 0
24.09.2010, 17:35
    #36865474
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxЧекбоксы идут с checkbox1 по checkbox24

Код: plaintext
1.
2.
3.
4.
Dim i As Integer
For i= 1  To  24 
  UserForm1.Controls("CheckBox"+CStr(i)).Enabled = SheetIndex(((i -  1 ) \  12 ) +  9 , ((i -  1 ) Mod  12 ) +  1 ) <> - 1 
Next

Сорри. не удержался, написал все в одну строку
...
Рейтинг: 0 / 0
24.09.2010, 17:36
    #36865476
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.ProfedoamxСпасибо. а как эту функцию с чекбоксами связать?
Как я уже сказал - определитесь, что вы хотите.
Вы хотели функцию проверки наличия листа и получения его индекса - вот она.

Теперь сформулируйте, что значит "связать" в вашем понимании.


Ок :)

мы проверяем есть ли лист,допустим листа с названием 03,10 нету, то CheckBox(3).enabled = false.
...
Рейтинг: 0 / 0
24.09.2010, 17:40
    #36865488
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxмы проверяем есть ли лист,допустим листа с названием 03,10 нету, то CheckBox(3).enabled = false.
Я перечитал первый пост и написал вам этот цикл (выше).

Но тут интересная картина - вы просите проверить лист с названием "03,10"
В то же время в своем коде, который я не менял, вы формулируете имя листа иначе:
Код: plaintext
 strName = "0" + CStr(i) + ";0" + Cstr(k)
определитесь и доработайте функцию SheetIndex
...
Рейтинг: 0 / 0
24.09.2010, 17:45
    #36865496
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Profedoamxмы проверяем есть ли лист,допустим листа с названием 03,10 нету, то CheckBox(3).enabled = false.
Я перечитал первый пост и написал вам этот цикл (выше).

Но тут интересная картина - вы просите проверить лист с названием "03,10"
В то же время в своем коде, который я не менял, вы формулируете имя листа иначе:
Код: plaintext
 strName = "0" + CStr(i) + ";0" + Cstr(k)
определитесь и доработайте функцию SheetIndex

Вы имеете ввиду ";" - "," ?
...
Рейтинг: 0 / 0
24.09.2010, 18:05
    #36865519
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxВы имеете ввиду ";" - "," ?

Не только, например ваша формула
Код: plaintext
"0" + CStr( 11 ) + ";0" + Cstr( 10 )
даст
"011;010"
у вас именно так листы соответствующие называются?
...
Рейтинг: 0 / 0
24.09.2010, 18:07
    #36865525
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Pro,

да именно так 01,10 - январь 2010 года, 12,10 - декабрь 2010
...
Рейтинг: 0 / 0
24.09.2010, 18:12
    #36865534
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Перечитайте мой вопрос внимательно
...
Рейтинг: 0 / 0
24.09.2010, 18:19
    #36865544
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Pro,

каюсь! вы имели в виду 0 10?
...
Рейтинг: 0 / 0
24.09.2010, 18:21
    #36865550
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxShocker.Pro,

каюсь! вы имели в виду 0 10?
и 012 в месяце

Чтобы я не все за вас делал - покурите функцию Format
...
Рейтинг: 0 / 0
24.09.2010, 18:30
    #36865561
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.ProfedoamxShocker.Pro,

каюсь! вы имели в виду 0 10?
и 012 в месяце

Чтобы я не все за вас делал - покурите функцию Format

ОГРОМНОЕ ВАМ СПАСИБО!
...
Рейтинг: 0 / 0
24.09.2010, 18:33
    #36865567
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
fedoamxОГРОМНОЕ ВАМ СПАСИБО!
что-то мне подсказывает - рано!
...
Рейтинг: 0 / 0
24.09.2010, 18:33
    #36865569
fedoamx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверить лист на существование VBA
Shocker.Pro,

А не могли бы вы объяснить как iMonth и iYear формируются?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проверить лист на существование VBA / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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