powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проверить лист на существование VBA
25 сообщений из 45, страница 1 из 2
проверить лист на существование VBA
    #36865374
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Скажу сразу, в 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
проверить лист на существование VBA
    #36865381
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx,

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

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

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

блин, видимо я сути не понимаю. А как без цикла? и strName разве не является параметром?
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865439
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
strName - так задается название листа.
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865444
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
проверить лист на существование VBA
    #36865449
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx,

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

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

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

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

Теперь сформулируйте, что значит "связать" в вашем понимании.
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865474
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
проверить лист на существование VBA
    #36865476
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProfedoamxСпасибо. а как эту функцию с чекбоксами связать?
Как я уже сказал - определитесь, что вы хотите.
Вы хотели функцию проверки наличия листа и получения его индекса - вот она.

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


Ок :)

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

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

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

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

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

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

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

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

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

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

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

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

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


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