Страницы: 1
RSS
Worksheet_SelectionChange баг или фича?, После сохранения, закрытия и открытия файла макрос не работает.
 
Добрый день.
Сразу скажу, что в VBA  я полный нуль, поэтому сорри, если тема известная. Найти не сумел.  
Пытаясь сделать свою жизнь проще локализовал проблему:
Простенький макрос из одной строки, который на Лист2 помнит заголовок  активной строки на Лист1,  перестает работать, будучи сохраненным, после закрытия и открытия книги.
Мало того, при открытии сохраненной книги, в редакторе, окно макроса листа Worksheet_SelectionChange "не открывается", показывает только заголовок пустого окна. Становится доступным только после открытия окна макроса книги и выбора какого либо события книги.
Что это? Кривой Excel,  VB или руки пользователя? на всякий случай текст макроса на Лист1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Лист2"  ;)  .[B1].Value = Cells(Target.Row, 2).Value

End Sub
 
Книгу надо сохранять с поддержкой макросов:
Сохранить как - *.xlsm или как двоичную - *.xlsb
 
Да, само собой сохраняю в xlsm.
 
Кто-нибудь разобрался с событиями листа?
Пытаюсь сделать запуск макроса (календарь) при выделении ячейки.
В Windows все работает, в Mac нет (((

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Target.Address = "$C$5" Or Target.Address = "$C$7" Then: Call Module1.showcalendar
End Sub
 
Попробуйте создать макрос
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Target.Address = "$C$5" Or Target.Address = "$C$7" Then: Call Module1.showcalendar 
End Sub
в Мак заново.
Иногда бывает, что Worksheet_SelectionChange из Win в Маке не работает.
 
Вы имеете ввиду создать полностью макрос календаря, включая формы?
Самое интересное, что если я вставляю на лист фигуру с вызовом этого макроса, то все работает, макрос вызывается.
А вот через событие не хочет.

и, кстати, это событие тоже не обрабатывается.
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target = [B6] Or Target = [C6] Then
       Rows("8:1048576").Hidden = True
       Rows("373:374").Hidden = False
       If [B6] > [C6] Then
           Rows([B6] - 42003 & ":" & [C6] - 42003).Hidden = False
       Else
           Rows([C6] - 41997 & ":" & [B6] - 41997).Hidden = False
       End If
   EndIf
End Sub
Изменено: asaurus - 21.03.2015 16:23:37
 
asaurus, два момента:
1. Зачем в данном случае цитата? Ответить без неё никак?
2. Код следует оформлять тегом - посмотрите, как это сделал Михаил. Где легче читается?
 
Цитата
Юрий М написал:
asaurus, два момента:
1. Зачем в данном случае цитата? Ответить без неё никак?
2. Код следует оформлять тегом - посмотрите, как это сделал Михаил. Где легче читается?
1. Юрий, на любом форуме, да и вообще по правилам вежливости, если ты отвечаешь конкретному человеку, принято сначала цитировать его (человека) высказывание, на которое отвечаешь.
И если на этом форуме что-то отображается не корректно, то данный вопрос надо адресовать админам данного форума, а не мне.
2. Покажите мне, видимо, неграмотному пользователю, где при создании сообщения выбирается "оформление тегом"?
http://prntscr.com/6jfrrb
- это я пытался вставить картинку по правилам и вот как выходит.
Изменено: asaurus - 21.03.2015 13:21:23
 
И вот, на всякий случай, мой файл, который полностью работает на Windows, а на Mac не хочет.
даже полностью практически очищенный файл весит 600кБ и сюда ну никак не помещается (
пришлось залить сюда https://cloud.mail.ru/public/ee01a84768ea/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80.xlsb
Изменено: asaurus - 21.03.2015 13:31:10
 
1. asaurus, смотрите вариант ответа по "правилам вежливости" без цитирования:
Михаил С., Вы имеете ввиду создать полностью макрос календаря, включая формы?
Самое интересное, что если я вставляю на лист фигуру с вызовом этого макроса, то все работает, макрос вызывается.
А вот через событие не хочет. и, кстати, это событие тоже не обрабатывается


===
И кто Вам сказал что нужно обязательно цитировать всё целиком? И код цитировать? Ведь цитата для чего? - чтобы сделать на чём-то акцент. А Вы на чём сделали  акцент? Кстати, отвечать мне можно было аналогично - без цитат. Я вот отвечаю Вам без цитат - Вы понимаете кому и о чём я пишу?
2. Над полем ответа есть ряд кнопок для форматирования текста. Одна из них ( <...> ) предназначения для оформления кодов. Назначение кнопок Вы можете узнать самостоятельно, подведя к ней указатель мыши - появится подсказка.
===
А теперь вернитесь в свои сообщения и удалите ненужное цитирование - оно только загромождает сообщение и ухудшает читабельность.
 
Цитата
asaurus написал:
на любом форуме, да и вообще по правилам вежливости, если ты отвечаешь конкретному человеку, принято сначала цитировать его (человека) высказывание, на которое отвечаешь.
А если высказывание строк 40-50, то его тоже нужно целиком цитировать? Зачем? И причём тут вежливость? Обратиться к человеку на ВЫ - согласен.
 
1. Тогда объясните мне назначение кнопки "Цитировать", ибо в правилах форума не указано о запрете использования данной кнопки, а только об акценте, на что я и делаю упор.
И по мне использование цитаты выделяет аспект, на который идет ответ.
И на многих форумах наоборот напрямую говорят об использовании цитат, если делается конкретный ответ на конкретный вопрос.
А в Вашем ответе мне без использования "цитаты" Ваш же ответ полностью слился с моим, и получается довольно не читабельная конструкция.
Опять же ответ с помощью "цитаты" позволяет показать на какое сообщение пользователя идет этот ответ если сообщений этого пользователя в данном форуме несколько. Не надо листать историю вверх, чтобы найти вопрос, на который потом пришелся этот ответ.
ИМХО.

Есть вопрос, на него потом через 20 постов есть ответ.
Следуя Вашей логике, мне надо сначала прокрутить назад эти 20 постов, чтобы увидеть вопрос, потом прокрутить вперед, чтобы увидеть ответ.
В ответе с "цитатой" не надо никуда возвращаться, все наглядно, на какой вопрос пришелся это ответ.

2. Опять же по поводу кнопки ( <...> )  - где в правилах указано, что только так надо оформлять код?
И опять же, данная кнопка звучит как "оформление текста в виде кода", а не оформление кода, и мне, как рядовому и постоянному пользователю форума не понятно, в виде какого когда я должен оформить свой, или какой другой текст, в сообщении.
 
Возможно у Вас возникнет желание "забанить" столь нерадивого пользователя, только прежде чем сделать это, пришлите мне пункты правил, нарушенные мной, как того требует законодательство.
 
Исправление шрифта после опубликования ответа - это сильно!!!!
Ведь только модератор может исправить шрифт сообщения без отображения об изменении данного сообщения.
Но изначально этот ответ Вы мне прислали без "Жирного" шрифта, о чем я и сделал акцент о нечитабельности сообщения.
Изменено: asaurus - 21.03.2015 14:38:00
 
И я не говорил про полную цитату 40-50 строк!
А только про акцент.
Изменено: asaurus - 21.03.2015 14:35:27
 
Посмотрите мой #11 - я же не цитировал Ваше сообщение полностью? Процитировал ТОЛЬКО то, что хотел подчеркнуть.
И Ваш ответ следовал сразу за сообщением Михаила - с кем
Вы боялись его перепутать? Да и цитирование формулы - полная нелепость...


Цитата
asaurus написал:
мне, как рядовому и постоянному пользователю форума не понятно, в виде какого когда я должен оформить свой, или какой другой текст
Постоянные пользователи давно уже разобрались)
И хватит уже спорить со мной - просто устраните замечания.
 
Кстати, обратите внимание на п. 3.10 наших Правил.
 
Я уже Вам ответил на все вопросы.
Цитата придумана для того, чтобы отвечать на конкретное сообщение.
Цитату на формулу я не делал.
Была цитата сообщения Михаила, чтобы было понятно о какой формуле идет речь.
А пункт 3.10, кстати да, придуман как всегда из расчета, что "шеф всегда прав".
Только на наших форумах, кстати, присутствует такой пункт, ибо на зарубежных форумах за отказ от полемики пользователю администратором следует очень суровое наказание, вплоть до судебного за нарушение личных прав!
 
Михаил С. сейчас читает нашу дискуссию, и видимо смеется.
Простите, Михаил, что так случилось.
Я бы хотел разобраться с данным вопросом, но, видимо, уже не на этом форуме.
 
Цитата
asaurus написал: Я уже Вам ответил на все вопросы.
Не на все.
Цитата
Цитата придумана для того, чтобы отвечать на конкретное сообщение.
Для этого необязательно цитировать ЦЕЛИКОМ всё сообщение.
Цитата
Цитату на формулу я не делал.
Я ошибся - цитировали код, а в этом нет никакой необходимости.
Цитата
Была цитата сообщения Михаила, чтобы было понятно о какой формуле идет речь.
Хватило бы простого обращения.
Цитата
на зарубежных форумах за отказ от полемики пользователю администратором следует очень суровое наказание, вплоть до судебного за нарушение личных прав!
Странно читать о личных правах - здесь Вам никто и ничем не обязан.
 
Закрыли обсуждение.
 
Цитата
asaurus написал: Михаил С. сейчас читает нашу дискуссию, и видимо смеется.
я больше всех не люблю излишнее цитирование.
И даже скажу больше, модераторы здесь ругают за оверлокинг и с моей подачи тоже.
___________
по сути вопроса - я же сказал, написать по-новой макрос в модуле листа
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ...
 
Строка
If Target = [B6] Or Target = [C6] Then
равносильна строке:
If Target.Value = [B6].Value Or Target.Value = [C6].Value Then

Чтобы было понятно, почему не работает. Михаил привел пример, как можно сделать.
Скрытый текст
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх