Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

monthname

464
24 июля 2003 года
WildAn
147 / / 19.05.2003
Всем привет.
А чего-то я не понял. Дело в excelе (office 97)Вот процедура.
Private Sub CommandButton1_Click()
UserForm2.Hide
Workbooks("Программа ОТЧЕТНОСТЬ").Worksheets(monthname(TextBox1.Text)).Activate
ThisWorkbook.Worksheets("скрытый").Range("A1").Value = UserForm2.TextBox1.Text
End Sub
Запускаю. Пишет "процедура sub или Function не определена. Ругается на "monthname" Не поддерживает такое что-ли?
258
24 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn
Всем привет.
А чего-то я не понял. Дело в excelе (office 97)Вот процедура.
Private Sub CommandButton1_Click()
UserForm2.Hide
Workbooks("Программа ОТЧЕТНОСТЬ").Worksheets(monthname(TextBox1.Text)).Activate
ThisWorkbook.Worksheets("скрытый").Range("A1").Value = UserForm2.TextBox1.Text
End Sub
Запускаю. Пишет "процедура sub или Function не определена. Ругается на "monthname" Не поддерживает такое что-ли?



Ты в нее число должен пихать. Переводи в числовой вид что у тебя в TextBox1.Text лежит.

464
24 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV


Ты в нее число должен пихать. Переводи в числовой вид что у тебя в TextBox1.Text лежит.


Так я число и ввожу. Я даже так пробовал
mesyc=monthname(6) Один фиг ругается так же. Я этот макрос писал в office 2000 в этом причина может быть?

267
24 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Нету там никакого monthname.

Вот посмотри внимательно - у тебя все слова в программе стали с большой буквы, а monthname - не стало. Это верный признак того, что ВБА такое видит в первый раз.
464
24 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark
Нету там никакого monthname.

Вот посмотри внимательно - у тебя все слова в программе стали с большой буквы, а monthname - не стало. Это верный признак того, что ВБА такое видит в первый раз.


Дело в том, что на другом компе работет этот макрос. Вот в чем закадка для меня :-) Там office 2000 стоит.

258
24 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

Дело в том, что на другом компе работет этот макрос. Вот в чем закадка для меня :-) Там office 2000 стоит.



А че там гадать, стереть можно все что угодно или просто там в Tools/Prefences эта библиотека отключена,.. зайди в редакторе VBA, нажми F2? введи в поиск monthname и посмотри найдет ли... должен найти в Library: VBA, Модуль - String, сразу глянь (чуть выше), есть ли среди <All Libraries> библиотека VBA

464
28 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV


найдет ли... должен найти в Library: VBA, Модуль - String


Не нашел

Цитата:

сразу глянь (чуть выше), есть ли среди <All Libraries> библиотека VBA


Глянул Есть. Как подключить то , что мне нужно?
HELP

258
28 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Слушай, посмотри вот что:
Выбери в Object Browser в выпадающем списке <All Libraries> модуль VBA. Внизу экрана должно появиться описание библиотеки, такое:
Library VBA
C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
Visual Basic For Applications

Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...:)
464
28 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV
Слушай, посмотри вот что:
Выбери в Object Browser в выпадающем списке <All Libraries> модуль VBA. Внизу экрана должно появиться описание библиотеки, такое:
Library VBA
C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6.DLL
Visual Basic For Applications

Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...:)


У меня там вот чего C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA332.DLL
Visual Basic For Applications А папки vba6 нетути

258
28 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

У меня там вот чего C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA332.DLL
Visual Basic For Applications А папки vba6 нетути



Ага, кажется это все объясняет.... так, вот что, найди для начала у себя файл на диске - VBE6.DLL
, есть ли он вообще где-нибудь...?

258
28 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Мдаа, только что-то я увлекся, у тебя-то Office97, так что файл dll может иметь немного другое название ...

Посмотри все таки >>>>>>
Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...

Какие там классы есть-то? Math хотя бы есть...?
464
28 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV
Мдаа, только что-то я увлекся, у тебя-то Office97, так что файл dll может иметь немного другое название ...

Посмотри все таки >>>>>>
Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...

Какие там классы есть-то? Math хотя бы есть...?


math есть и string есть. Тока в stringах нет monthname

258
28 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

math есть и string есть. Тока в stringах нет monthname



Может в Office97 и нет этой функции.... :(

Можно было бы тебе конечно подсунуть Vbe6.dll, тока она занимает 2,5 Мб... по почте так не перешлешь

А поповоду должна ли быть эта функция в Office97, это к Cutty Sark, он с таким офисом работает и может посмотреть как у него, как называется его библиотека с VBA и какие там функции...

Ну и как общий совет, переставь себе Office заново, чтобы все нужные библиотеки встали... у меня как-то был такой глюк - не хотел запускаться VBE, т.е. где-нибудь в Excel жмешь F11, он долго копается и вылетает с ошибкой, переустановка офиса и чистка реестра не помогла (может плохая чистка была) и пришлось заново переставлять систему, тока все пошло - вот такие пироги...

267
28 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Нету в 97-м monthname.

Честно говоря, давно бы уж сам написал, WildAn.
Всего-то одна конструкция Select Case. 8)
464
29 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark
Нету в 97-м monthname.

Честно говоря, давно бы уж сам написал, WildAn.
Всего-то одна конструкция Select Case. 8)


Да это понятно. И office можно 2000 поставить. Но уже разгорелся спортивный интерес. Как это можно подвязать vbe6 в office 97? А, SergeySV? Этот файл-то у меня есть :-) Инте-е-е-ересно.

258
29 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

Да это понятно. И office можно 2000 поставить. Но уже разгорелся спортивный интерес. Как это можно подвязать vbe6 в office 97? А, SergeySV? Этот файл-то у меня есть :-) Инте-е-е-ересно.



Ну что ж, попробовать можно так:
1. сначала необходимо зарегистрировать эту библиотеку. Если она уже зарег., то она сразу об этом вякнет. Переписываем файл в директорию, например, в ту же: C:\Program Files\Common Files\Microsoft Shared\VBA - чтобы не разбрасываться... :)
2. Для регистрации необходимо запустить файл -Windows\System\regsvr32.exe "имя.dll". Чтобы не мудрить с путями до нашей dll, проще сделать так: открой в каком-нибудь файл-менеджере справа Windows\System\, а слева C:\Program Files\Common Files\Microsoft Shared\VBA (где твоя vbe6.dll лежит) и напиши в командной строке - regsvr32.exe vbe6.dll
4. Теперь в редакторе VB заходим в Tools/References и убираем галку с названия: Visual Basic For Applications. (потому как две библиотеки с одинаковым названием не могут быть подключены)
3. Теперь ниже, среди других ищем здесь строку с названием: Visual Basic For Applications - но название файла у нее должно быть - vbe6.dll (название файла dll высвечивается внизу окна)
Если такого нет, не беда, нажимаем на кнопку Browser, находим наш файл, он появляется в списке, отмечаем его.
4. В меню Debug выбираем Compile VBAProject, ну и можно сохраниться
5. Пробуем написать функцию...

464
29 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV


Ну что ж, попробовать можно так:
1. сначала необходимо зарегистрировать эту библиотеку. Если она уже зарег., то она сразу об этом вякнет. Переписываем файл в директорию, например, в ту же: C:\Program Files\Common Files\Microsoft Shared\VBA - чтобы не разбрасываться... :)
2. Для регистрации необходимо запустить файл -Windows\System\regsvr32.exe "имя.dll". Чтобы не мудрить с путями до нашей dll, проще сделать так: открой в каком-нибудь файл-менеджере справа Windows\System\, а слева C:\Program Files\Common Files\Microsoft Shared\VBA (где твоя vbe6.dll лежит) и напиши в командной строке - regsvr32.exe vbe6.dll


Как я узнаю, что она зарегистрировалась?

Цитата:

4. Теперь в редакторе VB заходим в Tools/References и убираем галку с названия: Visual Basic For Applications.


Не убирается. Говорит, используется в данное время

258
29 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

Как я узнаю, что она зарегистрировалась?

Не убирается. Говорит, используется в данное время



Да, regsvr32.exe /u тоже не помогает, не хочет ее отцеплять, значит обломчик.... :( потому как новую ты не добавишь, у них названия одинаковые.

464
29 июля 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by SergeySV


Да, regsvr32.exe /u тоже не помогает, не хочет ее отцеплять, значит обломчик.... :( потому как новую ты не добавишь, у них названия одинаковые.


НУ да ладно, может найдется решение неожиданно.;)

258
29 июля 2003 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by WildAn

НУ да ладно, может найдется решение неожиданно.;)



Да ты однако оптимист.... ;) :) ;)

267
29 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Свою, свою напиши, не майся. Вот я например, написал один раз в жизни такую процедуру:
Код:
Function ДеньНеделиПрописью(НомерДняНедели As Integer, Optional Тип As Integer = 0) As String
' Записывает прописью название дня недели (1 - Пн, 2 - Вт, ..., 0 и 7 - Вс)
' Если Тип = 1, то запись 1-ой буквой ("П", "В" и т.п.)
' Если Тип = 2, то запись 2-мя буквами ("Пн", "Вт" и т.п.)
' Если Тип = 0, то запись полностью ("Вторник" и т.п.)
' Если Тип = 11, то запись 1-ой буквой ("M", "S" и т.п.)
' Если Тип = 12, то запись 2-мя буквами ("Mo", "Tu" и т.п.)
' Если Тип = 10, то запись полностью ("Monday" и т.п.)
   
    Select Case Тип
        Case 1
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "П"
                Case 2
                    ДеньНеделиПрописью = "В"
                Case 3
                    ДеньНеделиПрописью = "С"
                Case 4
                    ДеньНеделиПрописью = "Ч"
                Case 5
                    ДеньНеделиПрописью = "П"
                Case 6
                    ДеньНеделиПрописью = "С"
                Case Else
                    ДеньНеделиПрописью = "В"
            End Select
        Case 2
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Пн"
                Case 2
                    ДеньНеделиПрописью = "Вт"
                Case 3
                    ДеньНеделиПрописью = "Ср"
                Case 4
                    ДеньНеделиПрописью = "Чт"
                Case 5
                    ДеньНеделиПрописью = "Пт"
                Case 6
                    ДеньНеделиПрописью = "Сб"
                Case Else
                    ДеньНеделиПрописью = "Вс"
            End Select
        Case 11
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "M"
                Case 2
                    ДеньНеделиПрописью = "T"
                Case 3
                    ДеньНеделиПрописью = "W"
                Case 4
                    ДеньНеделиПрописью = "T"
                Case 5
                    ДеньНеделиПрописью = "F"
                Case 6
                    ДеньНеделиПрописью = "S"
                Case Else
                    ДеньНеделиПрописью = "S"
            End Select
        Case 12
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Mo"
                Case 2
                    ДеньНеделиПрописью = "Tu"
                Case 3
                    ДеньНеделиПрописью = "We"
                Case 4
                    ДеньНеделиПрописью = "Th"
                Case 5
                    ДеньНеделиПрописью = "Fr"
                Case 6
                    ДеньНеделиПрописью = "Sa"
                Case Else
                    ДеньНеделиПрописью = "Su"
            End Select
        Case 10
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Monday"
                Case 2
                    ДеньНеделиПрописью = "Tuesday"
                Case 3
                    ДеньНеделиПрописью = "Wednesday"
                Case 4
                    ДеньНеделиПрописью = "Thursday"
                Case 5
                    ДеньНеделиПрописью = "Friday"
                Case 6
                    ДеньНеделиПрописью = "Saturday"
                Case Else
                    ДеньНеделиПрописью = "Sunday"
            End Select
        Case Else
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Понедельник"
                Case 2
                    ДеньНеделиПрописью = "Вторник"
                Case 3
                    ДеньНеделиПрописью = "Среда"
                Case 4
                    ДеньНеделиПрописью = "Четверг"
                Case 5
                    ДеньНеделиПрописью = "Пятница"
                Case 6
                    ДеньНеделиПрописью = "Суббота"
                Case Else
                    ДеньНеделиПрописью = "Воскресенье"
            End Select
    End Select
End Function

и навсегда закрыл для себя эту проблему.
464
29 июля 2003 года
WildAn
147 / / 19.05.2003
Не рекомендуешь ставить 2000?
267
29 июля 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn
Не рекомендуешь ставить 2000?



Это вопрос мне?
Я сознательно выбрал 97-й офис, потому что возможностей у 2000-го добавилось не бог весть сколько и каких важных, а вот тормозить оно стало гораздо сильнее. А офис ХР не видел не разу, но не сомневаюсь, что он еще тормознее 2000-го...

464
04 августа 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark
Свою, свою напиши, не майся. Вот я например, написал один раз в жизни такую процедуру:
Код:
Function ДеньНеделиПрописью(НомерДняНедели As Integer, Optional Тип As Integer = 0) As String
' Записывает прописью название дня недели (1 - Пн, 2 - Вт, ..., 0 и 7 - Вс)
' Если Тип = 1, то запись 1-ой буквой ("П", "В" и т.п.)
' Если Тип = 2, то запись 2-мя буквами ("Пн", "Вт" и т.п.)
' Если Тип = 0, то запись полностью ("Вторник" и т.п.)
' Если Тип = 11, то запись 1-ой буквой ("M", "S" и т.п.)
' Если Тип = 12, то запись 2-мя буквами ("Mo", "Tu" и т.п.)
' Если Тип = 10, то запись полностью ("Monday" и т.п.)
   
    Select Case Тип
        Case 1
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "П"
                Case 2
                    ДеньНеделиПрописью = "В"
                Case 3
                    ДеньНеделиПрописью = "С"
                Case 4
                    ДеньНеделиПрописью = "Ч"
                Case 5
                    ДеньНеделиПрописью = "П"
                Case 6
                    ДеньНеделиПрописью = "С"
                Case Else
                    ДеньНеделиПрописью = "В"
            End Select
        Case 2
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Пн"
                Case 2
                    ДеньНеделиПрописью = "Вт"
                Case 3
                    ДеньНеделиПрописью = "Ср"
                Case 4
                    ДеньНеделиПрописью = "Чт"
                Case 5
                    ДеньНеделиПрописью = "Пт"
                Case 6
                    ДеньНеделиПрописью = "Сб"
                Case Else
                    ДеньНеделиПрописью = "Вс"
            End Select
        Case 11
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "M"
                Case 2
                    ДеньНеделиПрописью = "T"
                Case 3
                    ДеньНеделиПрописью = "W"
                Case 4
                    ДеньНеделиПрописью = "T"
                Case 5
                    ДеньНеделиПрописью = "F"
                Case 6
                    ДеньНеделиПрописью = "S"
                Case Else
                    ДеньНеделиПрописью = "S"
            End Select
        Case 12
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Mo"
                Case 2
                    ДеньНеделиПрописью = "Tu"
                Case 3
                    ДеньНеделиПрописью = "We"
                Case 4
                    ДеньНеделиПрописью = "Th"
                Case 5
                    ДеньНеделиПрописью = "Fr"
                Case 6
                    ДеньНеделиПрописью = "Sa"
                Case Else
                    ДеньНеделиПрописью = "Su"
            End Select
        Case 10
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Monday"
                Case 2
                    ДеньНеделиПрописью = "Tuesday"
                Case 3
                    ДеньНеделиПрописью = "Wednesday"
                Case 4
                    ДеньНеделиПрописью = "Thursday"
                Case 5
                    ДеньНеделиПрописью = "Friday"
                Case 6
                    ДеньНеделиПрописью = "Saturday"
                Case Else
                    ДеньНеделиПрописью = "Sunday"
            End Select
        Case Else
            Select Case НомерДняНедели
                Case 1
                    ДеньНеделиПрописью = "Понедельник"
                Case 2
                    ДеньНеделиПрописью = "Вторник"
                Case 3
                    ДеньНеделиПрописью = "Среда"
                Case 4
                    ДеньНеделиПрописью = "Четверг"
                Case 5
                    ДеньНеделиПрописью = "Пятница"
                Case 6
                    ДеньНеделиПрописью = "Суббота"
                Case Else
                    ДеньНеделиПрописью = "Воскресенье"
            End Select
    End Select
End Function

и навсегда закрыл для себя эту проблему.


А какой-нибудь простенький примерчик использования не покажешь. Хочу понять, как работает этот select case. Не сложно?

267
04 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by WildAn

А какой-нибудь простенький примерчик использования не покажешь. Хочу понять, как работает этот select case. Не сложно?



Ну, например, так:

Код:
Function Test(x As Integer) As String

    Select Case x

        Case 1
            Test = "Один"
       
        Case 2, 15
            Test = "Два или пятнадцать"

        Case 3 To 7
            Test = "От трех до семи"

        Case Is < 0
            Test = "Отрицательное"

        Case Else
            Test = "Я такого числа не знаю..."
   
    End Select

End Function


А вообще-то все это в хелпе к Экселю/Ворду/Аксессу описано...
464
04 августа 2003 года
WildAn
147 / / 19.05.2003
Цитата:
Originally posted by Cutty Sark


А вообще-то все это в хелпе к Экселю/Ворду/Аксессу описано...


Да это я предполагал. Просто сидеть и вчитываться времени нет. Работы - выше крыши. Благодаря твоему примерчику, разобрался. Спасибо.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог