powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проверить лист на существование VBA
20 сообщений из 45, страница 2 из 2
проверить лист на существование VBA
    #36865570
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не все ништяк работает.
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865577
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxА не могли бы вы объяснить как iMonth и iYear формируются?
А что там непонятно? Целочисленное деление, деление по модулю - читайте в хелпе.
Плюс/минус - вроде понятно должно быть...
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865584
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProfedoamxОГРОМНОЕ ВАМ СПАСИБО!
что-то мне подсказывает - рано!

Это... :) у меня почему то с 1 по 9 чекбокс перестали работать
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865587
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxЭто... :) у меня почему то с 1 по 9 чекбокс перестали работать
Получившийся код покажите
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865590
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProfedoamxЭто... :) у меня почему то с 1 по 9 чекбокс перестали работать
Получившийся код покажите
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Sub CheckWrkSh()
Dim i As Integer
Dim k 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 i

End Sub




Function SheetIndex(iYear As Integer, iMonth As Integer) As Integer
SheetIndex = - 1 
On Error Resume Next
SheetIndex = Worksheets(Format(CStr(iMonth),  0 ) + "," + Format(CStr(iYear),  0 )).Index
End Function
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865605
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx
Код: plaintext
1.
Format(CStr(iMonth),  0 ) 

CStr вам не нужен, если используете Format.
Format(1, 0) даст вам "1" а вам надо "01"

Курите описание функции дальше.

пробуйте результат в Immediate-окне
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865652
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Profedoamx
Код: plaintext
1.
Format(CStr(iMonth),  0 ) 

CStr вам не нужен, если используете Format.
Format(1, 0) даст вам "1" а вам надо "01"

Курите описание функции дальше.

пробуйте результат в Immediate-окне
не понятно почему, но не получается.
Код: plaintext
SheetIndex = Worksheets(Format(iMonth, MM) + "," + Format(iYear,  0 )).Index

дальше курить? :)
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865679
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxдальше курить? :)
Похоже, вам придется курить типы данных.
Вы понимаете, чем отличается строка (строковой тип данных) от числа (числовой тип данных)?
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865697
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865702
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, если хотите, я могу подсказать, как правильно.
Но если разберетесь сами (а желание разобраться, кажется, имеется) - запомните на всю жизнь, попутно изучив сопутствующие вещи, которые тоже пригодятся....
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36865741
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Желание есть и даже очень. Я пока шел домой как раз об это и думал. :)
Про типы данных знаю, просто практики 1,5недели и я путаюсь.


Но спасибо, что помогаете разобраться самому.
Если Вас не затруднит, то я хотел бы отложить этот вопрос до понедельника :)
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36866139
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а зачем вам чекбоксы года, если у вас есть чекбоксы месяцев этого года?
И вообще, можно же просто привязать к чекбоксам имена листов. А то вдруг система именования поменяется...
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36866165
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMКстати, а зачем вам чекбоксы года, если у вас есть чекбоксы месяцев этого года?
И вообще, можно же просто привязать к чекбоксам имена листов. А то вдруг система именования поменяется...


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

вообщем вот так.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function PadL(pstr As String, pcnt As Long, ch As String)
  Dim strTmp As String
  strTmp = pstr
 Do While Len(strTmp) < pcnt
  strTmp = ch + strTmp
 Loop
 PadL = strTmp
End Function
Код: plaintext
1.
2.
3.
4.
5.
Function SheetIndex(iYear As Integer, iMonth As Integer) As Integer
    SheetIndex = - 1 
    On Error Resume Next
       SheetIndex = Worksheets(PadL(CStr(iMonth),  2 , "0") + "," + Right(CStr(iYear),  2 )).Index
End Function


с format слишком заморочено. Я так и не понял как вытащить месяц. но все равно спасибо.
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36867689
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мда. А все ведь было гораздо проще:
Код: plaintext
Format$(iMonth,"00")


А что с годом? В вашей конструкции для года 2009 будет все равно "9", а не "09".

Только если вы переделали исходную процедуру (но вы ее не приводите)
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36867710
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proмда. А все ведь было гораздо проще:
Код: plaintext
Format$(iMonth,"00")


Кстати, даже если без Format. Если вы для года использовали Right, никто не мешал сделать то же самое с месяцем:
Код: plaintext
Right(iMonth+ 100 ,  2 )

ЗЫ: если вы написали функцию PadL самостоятельно - неплохо для полутора недель практики. Ну ее тоже можно было упростить :) Есть такая штука:
Код: plaintext
String( 5 ,"0")
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36867900
fedoamx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

хм порадовали с
Код: plaintext
Format$(iMonth,"00")
Я всю хелпу облазил.. но такого не увидел. я подумал нужно imonth As Date сделать и как-то с ним побороться, т.е вытащить месяц.
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36867918
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamxЯ всю хелпу облазил.. но такого не увидел.
help User-Defined Numeric Formats (Format Function)
....
(0) Digit placeholder. Display a digit or a zero. If the expression has a digit in the position where the 0 appears in the format string, display it; otherwise, display a zero in that position.
help User-Defined Numeric Format Expressions Example

Format (format)Positive 5Negative 5 0.005.00-5.00

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

Код: plaintext
Right(imonth+ 100 ,  2 )
- ооочень круто! Прям порадовало!
...
Рейтинг: 0 / 0
проверить лист на существование VBA
    #36868022
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedoamx
Код: plaintext
Right(imonth+ 100 ,  2 )
- ооочень круто! Прям порадовало!

Кошернее:
Код: plaintext
Right$(CStr(iMonth+ 100 ),  2 )
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проверить лист на существование VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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