в то же время, если я открою в Excele файл, скажем Х2.xls и захочу выполнить макрос записанный в Х1.xls, то у меня ничего не получится.
Это не так - если макрос ориентирован на активную книгу или лист, то его расположение не влияет на его работу, например хоть в Personal.xls положи
Есть замечание по поводу
Quote (light26)
в то же время, если я открою в Excele файл, скажем Х2.xls и захочу выполнить макрос записанный в Х1.xls, то у меня ничего не получится.
Это не так - если макрос ориентирован на активную книгу или лист, то его расположение не влияет на его работу, например хоть в Personal.xls положи Hugo
Ну ты меня просто в тупик загоняешь такими вопросами! Про Copy/Paste слышал? Дeлаешь даблклик на той строчке, что показана на картинке, и копируй в открывшееся окно макросы начиная с Private Sub и до End Sub.
Quote (light26)
а сделать-то это как?
Ну ты меня просто в тупик загоняешь такими вопросами! Про Copy/Paste слышал? Дeлаешь даблклик на той строчке, что показана на картинке, и копируй в открывшееся окно макросы начиная с Private Sub и до End Sub.RAN
Это не так - если макрос ориентирован на активную книгу или лист, то его расположение не влияет на его работу, например хоть в Personal.xls положи
Да, если при нажатии кнопки "Макрос" (в 2007) этот макрос отобразится в списке макросов и будет активна кнопка "Выполнить", что не происходит в случае с тем же календарем.:(
Quote (Hugo)
Это не так - если макрос ориентирован на активную книгу или лист, то его расположение не влияет на его работу, например хоть в Personal.xls положи
Да, если при нажатии кнопки "Макрос" (в 2007) этот макрос отобразится в списке макросов и будет активна кнопка "Выполнить", что не происходит в случае с тем же календарем.:(light26
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(2)) Is Nothing Then Application.EnableEvents = False arr = www If Target = arr(3, 1) Then Target.Offset(, 22) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(4, 1) Then Target.Offset(, 23) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(5, 1) Then Target.Offset(, 26) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(6, 1) Then Target.Offset(, 24) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(7, 1) Then Target.Offset(, 25) = Format(Now, "hh:nn DD.MM.YYYY") Application.EnableEvents = True End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("O:Q")) Is Nothing Then DateForm.Show End If End Sub
не правильно?
RAN, а я так сделал:
Code
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) Dim arr If Target.Count <> 1 Then Exit Sub If Not Intersect(Target, Columns(2)) Is Nothing Then Application.EnableEvents = False arr = www If Target = arr(3, 1) Then Target.Offset(, 22) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(4, 1) Then Target.Offset(, 23) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(5, 1) Then Target.Offset(, 26) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(6, 1) Then Target.Offset(, 24) = Format(Now, "hh:nn DD.MM.YYYY") If Target = arr(7, 1) Then Target.Offset(, 25) = Format(Now, "hh:nn DD.MM.YYYY") Application.EnableEvents = True End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("O:Q")) Is Nothing Then DateForm.Show End If End Sub
Если между словами "лист" и "книга" разницы нет, то правильно, если есть - то неправильно. Или с русским языком большие проблемы? Извини, на другом писать не умею...
Если между словами "лист" и "книга" разницы нет, то правильно, если есть - то неправильно. Или с русским языком большие проблемы? Извини, на другом писать не умею... RAN
Скопируй код в модуль"ЭтаКнига", и будет твойе правой кнопке мыша счастье!
Какое именно щасьте должно быть правой клавише моего мыша? Потому как вставив
Code
Private Sub Workbook_BeforeClose(Cancel As Boolean) CalendarMenuDelete End Sub Private Sub Workbook_Open() Call CalendarMenuCreate End Sub
в окно, появившееся после двойного клика по "ЭтаКнига", VBA начинает материться. А если кликнуть правой кнопкой по "ЭтаКнига", затем insert, и далее module, то вставка кода в появившееся окно ничего не дает. Книгу я после каждого действия закрывал и снова открывал. Как было написано.
Quote (RAN)
Скопируй код в модуль"ЭтаКнига", и будет твойе правой кнопке мыша счастье!
Какое именно щасьте должно быть правой клавише моего мыша? Потому как вставив
Code
Private Sub Workbook_BeforeClose(Cancel As Boolean) CalendarMenuDelete End Sub Private Sub Workbook_Open() Call CalendarMenuCreate End Sub
в окно, появившееся после двойного клика по "ЭтаКнига", VBA начинает материться. А если кликнуть правой кнопкой по "ЭтаКнига", затем insert, и далее module, то вставка кода в появившееся окно ничего не дает. Книгу я после каждого действия закрывал и снова открывал. Как было написано.light26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Четверг, 01.09.2011, 10:25
Открываешь свой файл и файл с календарем. Заходишь в редактор VBA. Открываешь Wiev - Project Explorer (если закрыт) Открываешь Forms Хватаешь мышом DateForm и тащишь в норку (свой файл). Аналогично с модулями и модулями класса.
ВСЕ! Календарь в твоем файле!
Если выполнение этих операций достаточно для того, чтобы календарь был в моей книге, то есть
Quote (RAN)
А у тебя в этой книге календарь-то есть?
ну, как тебе сказать?
Quote (RAN)
Открываешь свой файл и файл с календарем. Заходишь в редактор VBA. Открываешь Wiev - Project Explorer (если закрыт) Открываешь Forms Хватаешь мышом DateForm и тащишь в норку (свой файл). Аналогично с модулями и модулями класса.
ВСЕ! Календарь в твоем файле!
Если выполнение этих операций достаточно для того, чтобы календарь был в моей книге, то естьlight26
Я не волшебник. Я только учусь
Сообщение отредактировал light26 - Четверг, 01.09.2011, 16:19
Да. Только вместо DateMenu у меня Module1, а в календаре, в образце (откуда я брал макрос), вообще нет такого модуля. В папке modules только DateSubFunction А в Module1 у меня такой текст:
Code
Option Explicit Option Private Module
Function www() www = Range("Статус").Value End Function
Quote (RAN)
У тебя есть все эти модули?
Да. Только вместо DateMenu у меня Module1, а в календаре, в образце (откуда я брал макрос), вообще нет такого модуля. В папке modules только DateSubFunction А в Module1 у меня такой текст:
Code
Option Explicit Option Private Module
Function www() www = Range("Статус").Value End Function
А где ж его взять-то? я же говорю: у меня в оригинальном файле с календарем нет этого модуля. А в моем файле вместо DateMenu стоит Module1. Или просто переименовать Module1 в DateMenu?
Quote (RAN)
Добавь DateMenu
А где ж его взять-то? я же говорю: у меня в оригинальном файле с календарем нет этого модуля. А в моем файле вместо DateMenu стоит Module1. Или просто переименовать Module1 в DateMenu?light26
В посте №36 я выложил скрин с VBA проекта файла из поста №6. Тебе все разжевали, в рот положили, уговаривают - ну проглоти, пожалуйста! А ты, как дите малое, все выплюнуть порываешся... Можешь что угодно, как угодно и куда угодно перемещать или переименовывать.
Дальнейшее обсуждение считаю абсолютно беспереспективным! >( >(
В посте №36 я выложил скрин с VBA проекта файла из поста №6. Тебе все разжевали, в рот положили, уговаривают - ну проглоти, пожалуйста! А ты, как дите малое, все выплюнуть порываешся... Можешь что угодно, как угодно и куда угодно перемещать или переименовывать.
Дальнейшее обсуждение считаю абсолютно беспереспективным! >( >( RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Пятница, 02.09.2011, 00:55