Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Возможен ли запуск 2х макросов параллельно? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Возможен ли запуск 2х макросов параллельно? (Макросы/Sub)
Возможен ли запуск 2х макросов параллельно?
Roman777 Дата: Вторник, 27.10.2015, 13:43 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Балуюсь. Хотел попробовать сделать управляемую штуку - типа змейки чтоли.
Получилось то что вышло (в прикреплённом файле)


Из-за того, что проверка нажатия клавиш находится внутри цикла с другими процессами, получается, что жать клавишу надо секунду - две чтобы квадратик сменил направление.

Поэтому подумал поместить в отдельную процедуру:
[vba]
Код
Do While cancel1
    DoEvents
    Up1 = GetKeyState(&H26)
    Down1 = GetKeyState(&H28)
    Left1 = GetKeyState(&H25)
    Right1 = GetKeyState(&H27)
loop
[/vba]
и если бы вышло запустить её одновременно с процессом перемещения квадратика (и независимо от цикла, по которому выполняется перемещение), то мб чувствительность нажатия была бы лучше...
Возможен ли запуск 2-х процедур одновременно (параллельно)?
К сообщению приложен файл: 6675352.xlsm (23.6 Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Вторник, 27.10.2015, 13:44
 
Ответить
СообщениеДобрый день!
Балуюсь. Хотел попробовать сделать управляемую штуку - типа змейки чтоли.
Получилось то что вышло (в прикреплённом файле)


Из-за того, что проверка нажатия клавиш находится внутри цикла с другими процессами, получается, что жать клавишу надо секунду - две чтобы квадратик сменил направление.

Поэтому подумал поместить в отдельную процедуру:
[vba]
Код
Do While cancel1
    DoEvents
    Up1 = GetKeyState(&H26)
    Down1 = GetKeyState(&H28)
    Left1 = GetKeyState(&H25)
    Right1 = GetKeyState(&H27)
loop
[/vba]
и если бы вышло запустить её одновременно с процессом перемещения квадратика (и независимо от цикла, по которому выполняется перемещение), то мб чувствительность нажатия была бы лучше...
Возможен ли запуск 2-х процедур одновременно (параллельно)?

Автор - Roman777
Дата добавления - 27.10.2015 в 13:43
SLAVICK Дата: Вторник, 27.10.2015, 15:35 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Сделал без GetKeyState - по изменению листа - посмотрите - особо не чистил... вроде работает :D
Перевложил файл.
К сообщению приложен файл: 2739207-1-.xlsm (26.3 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 27.10.2015, 15:56
 
Ответить
СообщениеСделал без GetKeyState - по изменению листа - посмотрите - особо не чистил... вроде работает :D
Перевложил файл.

Автор - SLAVICK
Дата добавления - 27.10.2015 в 15:35
Roman777 Дата: Вторник, 27.10.2015, 16:09 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, тоже думал попробовать через событие... но было интересно без него))) Гляну, Спасибо!


Много чего не знаю!!!!
 
Ответить
СообщениеSLAVICK, тоже думал попробовать через событие... но было интересно без него))) Гляну, Спасибо!

Автор - Roman777
Дата добавления - 27.10.2015 в 16:09
Roman777 Дата: Вторник, 27.10.2015, 16:15 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, Да работает действительно прикольно).


Много чего не знаю!!!!
 
Ответить
СообщениеSLAVICK, Да работает действительно прикольно).

Автор - Roman777
Дата добавления - 27.10.2015 в 16:15
Roman777 Дата: Вторник, 27.10.2015, 16:19 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, подскажите, пожалуйста, какой у этого логический смысл?
[vba]
Код
Up1 = Target.Row < rTemp
[/vba]


Много чего не знаю!!!!
 
Ответить
СообщениеSLAVICK, подскажите, пожалуйста, какой у этого логический смысл?
[vba]
Код
Up1 = Target.Row < rTemp
[/vba]

Автор - Roman777
Дата добавления - 27.10.2015 в 16:19
Roman777 Дата: Вторник, 27.10.2015, 16:21 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
А всё, разобрался, это именно логическое Boolean выражение, так?


Много чего не знаю!!!!
 
Ответить
СообщениеА всё, разобрался, это именно логическое Boolean выражение, так?

Автор - Roman777
Дата добавления - 27.10.2015 в 16:21
SLAVICK Дата: Вторник, 27.10.2015, 16:26 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
rTemp - это переменная, которая прописывается основным макросом, обозначающая строку
Target.Row - это строка активирования.
Если мы меняем курсор клавиатурой -
[vba]
Код
Target.Row будет <> rTemp или  Target.column будет <> cTemp
[/vba]
Если макрос меняет курсор, то Target.Row будет = rTemp

[vba]
Код
Up1 = Target.Row < rTemp
[/vba]
Это дает возможность понять куда мы тыцнули если
[vba]
Код
Target.Row < rTemp  тогда Up
Target.Row < rTemp  тогда Down
[/vba]
Надеюсь доступно изложил свою мысль :D иногда самому сложно понять, что написал yes

Пока писал сообщение Вы и сами догадались hands


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 27.10.2015, 16:28
 
Ответить
СообщениеrTemp - это переменная, которая прописывается основным макросом, обозначающая строку
Target.Row - это строка активирования.
Если мы меняем курсор клавиатурой -
[vba]
Код
Target.Row будет <> rTemp или  Target.column будет <> cTemp
[/vba]
Если макрос меняет курсор, то Target.Row будет = rTemp

[vba]
Код
Up1 = Target.Row < rTemp
[/vba]
Это дает возможность понять куда мы тыцнули если
[vba]
Код
Target.Row < rTemp  тогда Up
Target.Row < rTemp  тогда Down
[/vba]
Надеюсь доступно изложил свою мысль :D иногда самому сложно понять, что написал yes

Пока писал сообщение Вы и сами догадались hands

Автор - SLAVICK
Дата добавления - 27.10.2015 в 16:26
Roman777 Дата: Вторник, 27.10.2015, 16:32 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SLAVICK, да, оч доступно))) просто я самого выражения не понял, когда Вы сначала написали "=", а потом ещё добавили знак "<"...
А это просто означает, что если мы нажмём "вверх" то ячейка сместиться выше, соответственно Up1 станет равной True... я этого сразу не понял))).


Много чего не знаю!!!!
 
Ответить
СообщениеSLAVICK, да, оч доступно))) просто я самого выражения не понял, когда Вы сначала написали "=", а потом ещё добавили знак "<"...
А это просто означает, что если мы нажмём "вверх" то ячейка сместиться выше, соответственно Up1 станет равной True... я этого сразу не понял))).

Автор - Roman777
Дата добавления - 27.10.2015 в 16:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Возможен ли запуск 2х макросов параллельно? (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!