Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Public Function / 15 сообщений из 15, страница 1 из 1
18.08.2010, 12:09
    #36797451
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Добрый день.
И снова я с нубским вопросом)))
Задача такова, чтобы при введении например 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
18.08.2010, 12:14
    #36797465
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Код: 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
18.08.2010, 12:15
    #36797468
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
) постирались , сам добавь
...
Рейтинг: 0 / 0
18.08.2010, 12:19
    #36797476
Supper6
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Konst_One,
Вот ведь, мне еще учиться и учиться.
Спасибо, оно, работает.
Была идея еще одну переменную ввести, но чтоб так))
...
Рейтинг: 0 / 0
18.08.2010, 12:21
    #36797483
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Supper6,

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

сразу исправлю, чтоб не вызывало вопросов
...
Рейтинг: 0 / 0
18.08.2010, 12:23
    #36797491
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Вам нужно что ли по номеру месяца взять его название и название следующего?
Ужас какой.
Во-первых, 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
18.08.2010, 12:24
    #36797496
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Код: 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
18.08.2010, 12:26
    #36797500
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Ух, Антонарий опередил. Но он забыл, что DateSelial может получить на вход месяц №13, так что If i=12 then - лишнее
...
Рейтинг: 0 / 0
18.08.2010, 12:26
    #36797501
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
MonthName() конечно хорошо, никто не спорит, но не всегда оно даёт то, что нужно. может автору надо именно в определённом стиле строки с названиями месяцев.
...
Рейтинг: 0 / 0
18.08.2010, 12:30
    #36797519
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Shocker.ProУх, Антонарий опередил. Но он забыл, что DateSelial может получить на вход месяц №13, так что If i=12 then - лишнее Да, так еще лучше. Правда NumMonth = "" лишнее, это не дотнет)
...
Рейтинг: 0 / 0
18.08.2010, 12:32
    #36797522
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
я ещё раз напомню про региональную зависимость ф-й
...
Рейтинг: 0 / 0
18.08.2010, 12:36
    #36797542
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
Автор еще не дорос до того уровня, когда эта зависимость может стать камнем преткновения. А знать эти функции надо в любом случае.
...
Рейтинг: 0 / 0
18.08.2010, 12:37
    #36797544
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Public Function
AntonariyАвтор еще не дорос до того уровня, когда эта зависимость может стать камнем преткновения. А знать эти функции надо в любом случае.

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


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