powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Public Function
15 сообщений из 15, страница 1 из 1
Public Function
    #36797451
Supper6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
И снова я с нубским вопросом)))
Задача такова, чтобы при введении например NumMonth(4) = апрель-май
Код: plaintext
1.
? NumMonth( 4 )
апрель-май
так же, чтобы она была именно Public, ибо не раз потребуется пользоваться в макросах.
Ниже одна из моих попыток:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Function NumMonth(i As String) As Variant

'NumMonth(i) = 0
'For i = 1 To 12
NumMonth( 1 ) = "январь-февраль"
NumMonth( 2 ) = "февраль-март"
NumMonth( 3 ) = "март-апрель"
NumMonth( 4 ) = "апрель-май"
NumMonth( 5 ) = "май-июнь"
NumMonth( 6 ) = "июнь-июль"
NumMonth( 7 ) = "июль-август"
NumMonth( 8 ) = "август-сентябрь"
NumMonth( 9 ) = "сентябрь-октябрь"
NumMonth( 10 ) = "октябрь-ноябрь"
NumMonth( 11 ) = "ноябрь-декабрь"
NumMonth( 12 ) = "декабрь-январь"
'Next
End Function
как видно это не работает, да еще и Excel от нее зависает.
Спасибо.
...
Рейтинг: 0 / 0
Public Function
    #36797465
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Function NumMonth(i As String) As String
Dim Months( 11 ) as String

if i >=  1  and i <=  12  Then

Months( 0 ) = "январь-февраль"
Months( 1  = "февраль-март"
Months( 2  = "март-апрель"
Months( 3  = "апрель-май"
Months( 4  = "май-июнь"
Months( 5 )= "июнь-июль"
Months( 6 ) = "июль-август"
Months( 7 ) = "август-сентябрь"
Months( 8 ) = "сентябрь-октябрь"
Months( 9 ) = "октябрь-ноябрь"
Months( 10 ) = "ноябрь-декабрь"
Months( 11 ) = "декабрь-январь"

NumMonth = Months(i- 1 )

Else
NumMonth  = ""
End If

End Function


это хотел?
...
Рейтинг: 0 / 0
Public Function
    #36797468
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
) постирались , сам добавь
...
Рейтинг: 0 / 0
Public Function
    #36797476
Supper6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
Вот ведь, мне еще учиться и учиться.
Спасибо, оно, работает.
Была идея еще одну переменную ввести, но чтоб так))
...
Рейтинг: 0 / 0
Public Function
    #36797483
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Supper6,

Почему на входе String?
...
Рейтинг: 0 / 0
Public Function
    #36797485
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Public Function NumMonth(i As Integer) As String
...

сразу исправлю, чтоб не вызывало вопросов
...
Рейтинг: 0 / 0
Public Function
    #36797491
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам нужно что ли по номеру месяца взять его название и название следующего?
Ужас какой.
Во-первых, i никак не используется.
Во-вторых, запись
Код: plaintext
NumMonth( 1 ) = "январь-февраль"
не имеет смысла. NumMonth в данном контексте является переменной типа Variant, а никаким не массивом. Правильно, например, так:
Код: plaintext
If i="1" then NumMonth= "январь-февраль"
Правильно, но плохо. Нафига нам текстовый аргумент? Нафига нам лестница if'ов или даже select case?
Код: plaintext
1.
2.
Public Function NumMonth(i As Integer) As Sring
    NumMonth = Choose(i ,"январь-февраль", "февраль-март", и т.д.)
End Function
Уже лучше, но это не избавляет от необходимости вбивания всех месяцев по два раза, которые, кстати, система знает и без нас.

Код: plaintext
1.
2.
3.
4.
5.
6.
Public Function NumMonth(i As Integer) As Sring
    If i= 12  then
        NumMonth = LCase(MonthName( 12 ) & "-" & MonthName( 1 ))
    Else
        NumMonth = LCase(MonthName(i) & "-" & MonthName(i+ 1 ))
    End If
End Function
Совсем хорошо.
...
Рейтинг: 0 / 0
Public Function
    #36797496
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function NumMonth(i As Integer) As String

NumMonth = ""
If i >=  1  And i <=  12  Then
  NumMonth = LCase(Format$(DateSerial( 1900 , i,  1 ), "mmmm") + "-" + _
           Format$(DateSerial( 1900 , i +  1 ,  1 ), "mmmm"))
End If

End Function
...
Рейтинг: 0 / 0
Public Function
    #36797500
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ух, Антонарий опередил. Но он забыл, что DateSelial может получить на вход месяц №13, так что If i=12 then - лишнее
...
Рейтинг: 0 / 0
Public Function
    #36797501
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonthName() конечно хорошо, никто не спорит, но не всегда оно даёт то, что нужно. может автору надо именно в определённом стиле строки с названиями месяцев.
...
Рейтинг: 0 / 0
Public Function
    #36797519
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProУх, Антонарий опередил. Но он забыл, что DateSelial может получить на вход месяц №13, так что If i=12 then - лишнее Да, так еще лучше. Правда NumMonth = "" лишнее, это не дотнет)
...
Рейтинг: 0 / 0
Public Function
    #36797522
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ещё раз напомню про региональную зависимость ф-й
...
Рейтинг: 0 / 0
Public Function
    #36797542
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор еще не дорос до того уровня, когда эта зависимость может стать камнем преткновения. А знать эти функции надо в любом случае.
...
Рейтинг: 0 / 0
Public Function
    #36797544
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyАвтор еще не дорос до того уровня, когда эта зависимость может стать камнем преткновения. А знать эти функции надо в любом случае.

+1
...
Рейтинг: 0 / 0
Public Function
    #36798014
Supper6
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, воспользовался функцией Shocker.Pro .
Сейчас еще один маленький вопросик возник, создам новую тему))))
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Public Function
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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