monthname
А чего-то я не понял. Дело в 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" Не поддерживает такое что-ли?
Всем привет.
А чего-то я не понял. Дело в 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 лежит.
Ты в нее число должен пихать. Переводи в числовой вид что у тебя в TextBox1.Text лежит.
Так я число и ввожу. Я даже так пробовал
mesyc=monthname(6) Один фиг ругается так же. Я этот макрос писал в office 2000 в этом причина может быть?
Вот посмотри внимательно - у тебя все слова в программе стали с большой буквы, а monthname - не стало. Это верный признак того, что ВБА такое видит в первый раз.
Нету там никакого monthname.
Вот посмотри внимательно - у тебя все слова в программе стали с большой буквы, а monthname - не стало. Это верный признак того, что ВБА такое видит в первый раз.
Дело в том, что на другом компе работет этот макрос. Вот в чем закадка для меня :-) Там office 2000 стоит.
Дело в том, что на другом компе работет этот макрос. Вот в чем закадка для меня :-) Там office 2000 стоит.
А че там гадать, стереть можно все что угодно или просто там в Tools/Prefences эта библиотека отключена,.. зайди в редакторе VBA, нажми F2? введи в поиск monthname и посмотри найдет ли... должен найти в Library: VBA, Модуль - String, сразу глянь (чуть выше), есть ли среди <All Libraries> библиотека VBA
найдет ли... должен найти в Library: VBA, Модуль - String
Не нашел
сразу глянь (чуть выше), есть ли среди <All Libraries> библиотека VBA
Глянул Есть. Как подключить то , что мне нужно?
HELP
Выбери в 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..... о результатах доложить...:)
Слушай, посмотри вот что:
Выбери в 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 нетути
У меня там вот чего C:\PROGRAM FILES\COMMON FILES\MICROSOFT SHARED\VBA\VBA332.DLL
Visual Basic For Applications А папки vba6 нетути
Ага, кажется это все объясняет.... так, вот что, найди для начала у себя файл на диске - VBE6.DLL
, есть ли он вообще где-нибудь...?
Посмотри все таки >>>>>>
Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...
Какие там классы есть-то? Math хотя бы есть...?
Мдаа, только что-то я увлекся, у тебя-то Office97, так что файл dll может иметь немного другое название ...
Посмотри все таки >>>>>>
Дальше посмотри слева, в списке классов этой библиотеки (Classes) класс String, есть ли он?
Если есть, в правой половине (где список функций) поищи MonthName..... о результатах доложить...
Какие там классы есть-то? Math хотя бы есть...?
math есть и string есть. Тока в stringах нет monthname
math есть и string есть. Тока в stringах нет monthname
Может в Office97 и нет этой функции.... :(
Можно было бы тебе конечно подсунуть Vbe6.dll, тока она занимает 2,5 Мб... по почте так не перешлешь
А поповоду должна ли быть эта функция в Office97, это к Cutty Sark, он с таким офисом работает и может посмотреть как у него, как называется его библиотека с VBA и какие там функции...
Ну и как общий совет, переставь себе Office заново, чтобы все нужные библиотеки встали... у меня как-то был такой глюк - не хотел запускаться VBE, т.е. где-нибудь в Excel жмешь F11, он долго копается и вылетает с ошибкой, переустановка офиса и чистка реестра не помогла (может плохая чистка была) и пришлось заново переставлять систему, тока все пошло - вот такие пироги...
Честно говоря, давно бы уж сам написал, WildAn.
Всего-то одна конструкция Select Case. 8)
Нету в 97-м monthname.
Честно говоря, давно бы уж сам написал, WildAn.
Всего-то одна конструкция Select Case. 8)
Да это понятно. И office можно 2000 поставить. Но уже разгорелся спортивный интерес. Как это можно подвязать vbe6 в office 97? А, SergeySV? Этот файл-то у меня есть :-) Инте-е-е-ересно.
Да это понятно. И 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. Пробуем написать функцию...
Ну что ж, попробовать можно так:
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.
Не убирается. Говорит, используется в данное время
Как я узнаю, что она зарегистрировалась?
Не убирается. Говорит, используется в данное время
Да, regsvr32.exe /u тоже не помогает, не хочет ее отцеплять, значит обломчик.... :( потому как новую ты не добавишь, у них названия одинаковые.
Да, regsvr32.exe /u тоже не помогает, не хочет ее отцеплять, значит обломчик.... :( потому как новую ты не добавишь, у них названия одинаковые.
НУ да ладно, может найдется решение неожиданно.;)
НУ да ладно, может найдется решение неожиданно.;)
Да ты однако оптимист.... ;) :) ;)
' Записывает прописью название дня недели (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
и навсегда закрыл для себя эту проблему.
Не рекомендуешь ставить 2000?
Это вопрос мне?
Я сознательно выбрал 97-й офис, потому что возможностей у 2000-го добавилось не бог весть сколько и каких важных, а вот тормозить оно стало гораздо сильнее. А офис ХР не видел не разу, но не сомневаюсь, что он еще тормознее 2000-го...
Свою, свою напиши, не майся. Вот я например, написал один раз в жизни такую процедуру:
' Записывает прописью название дня недели (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. Не сложно?
А какой-нибудь простенький примерчик использования не покажешь. Хочу понять, как работает этот select case. Не сложно?
Ну, например, так:
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
А вообще-то все это в хелпе к Экселю/Ворду/Аксессу описано...
А вообще-то все это в хелпе к Экселю/Ворду/Аксессу описано...
Да это я предполагал. Просто сидеть и вчитываться времени нет. Работы - выше крыши. Благодаря твоему примерчику, разобрался. Спасибо.