Vba excel прервать макрос

Say I have a button embedded into my spreadsheet that launches some VBA function.

Private Sub CommandButton1_Click()
    SomeVBASub
End Sub

Private Sub SomeVBASub
    DoStuff
    DoAnotherStuff
    AndFinallyDothis
End Sub

I’d like to have an opportunity to have some sort of a «cancel» button that would stop SomeVBASub execution at an arbitrary moment, and I’m not into involving Ctrl+Break here, ’cause I’d like to do it silently.

I guess this should be quite common issue, any ideas?

Thanks.

asked Oct 20, 2010 at 16:02

Kirill Leontev's user avatar

Kirill LeontevKirill Leontev

10.6k7 gold badges43 silver badges49 bronze badges

Add another button called «CancelButton» that sets a flag, and then check for that flag.

If you have long loops in the «stuff» then check for it there too and exit if it’s set. Use DoEvents inside long loops to ensure that the UI works.

Bool Cancel
Private Sub CancelButton_OnClick()
    Cancel=True
End Sub
...
Private Sub SomeVBASub
    Cancel=False
    DoStuff
    If Cancel Then Exit Sub
    DoAnotherStuff
    If Cancel Then Exit Sub
    AndFinallyDothis
End Sub

answered Oct 20, 2010 at 16:10

Jamie Treworgy's user avatar

Jamie TreworgyJamie Treworgy

23.8k8 gold badges75 silver badges119 bronze badges

3

How about Application.EnableCancelKey — Use the Esc button

On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "This may take a long time: press ESC to cancel"
For x = 1 To 1000000    ' Do something 1,000,000 times (long!)
    ' do something here
Next x

handleCancel:
If Err = 18 Then
    MsgBox "You cancelled"
End If

Snippet from http://msdn.microsoft.com/en-us/library/aa214566(office.11).aspx

answered Oct 20, 2010 at 16:17

Faheem's user avatar

Or, if you want to avoid the use of a global variable you could use the rarely used .Tag property of the userform:

Private Sub CommandButton1_Click()
    Me.CommandButton1.Enabled = False 'Disabling button so user cannot push it
                                      'multiple times
    Me.CommandButton1.caption = "Wait..." 'Jamie's suggestion
    Me.Tag = "Cancel"
End Sub

Private Sub SomeVBASub
    If LCase(UserForm1.Tag) = "cancel" Then
        GoTo StopProcess
    Else
        'DoStuff
    End If

Exit Sub
StopProcess:
    'Here you can do some steps to be able to cancel process adequately
    'i.e. setting collections to "Nothing" deleting some files...
End Sub

answered Mar 25, 2014 at 19:02

simpLE MAn's user avatar

simpLE MAnsimpLE MAn

1,56213 silver badges22 bronze badges

what jamietre said, but

Private Sub SomeVBASub
    Cancel=False
    DoStuff
    If not Cancel Then DoAnotherStuff
    If not Cancel Then AndFinallyDothis
End Sub

answered Oct 20, 2010 at 16:13

Beth's user avatar

BethBeth

9,5131 gold badge23 silver badges43 bronze badges

I do this a lot. A lot. :-)

I have got used to using «DoEvents» more often, but still tend to set things running without really double checking a sure stop method.

Then, today, having done it again, I thought, «Well just wait for the end in 3 hours», and started paddling around in the ribbon. Earlier, I had noticed in the «View» section of the Ribbon a «Macros» pull down, and thought I have a look to see if I could see my interminable Macro running….

I now realise you can also get this up using Alt-F8.

Then I thought, well what if I «Step into» a different Macro, would that rescue me? It did :-)
It also works if you step into your running Macro (but you still lose where you’re upto), unless you are a very lazy programmer like me and declare lots of «Global» variables, in which case the Global data is retained :-)

K

answered Jul 16, 2014 at 14:26

Kenson Gurney's user avatar

~ For those using custom input box

Private Sub CommandButton1_Click()

DoCmd.Close acForm, Me.Name
End

End Sub

answered Apr 1, 2015 at 10:51

Paul Clint's user avatar

Paul ClintPaul Clint

911 gold badge2 silver badges10 bronze badges

This is an old post, but given the title of this question, the END option should be described in more detail. This can be used to stop ALL PROCEDURES (not just the subroutine running). It can also be used within a function to stop other Subroutines (which I find useful for some add-ins I work with).

As Microsoft states:

Terminates execution immediately. Never required by itself but may be placed anywhere in a procedure to end code execution, close files opened with the Open statement, and to clear variables*. I noticed that the END method is not described in much detail. This can be used to stop ALL PROCEDURES (not just the subroutine running).

Here is an illustrative example:

Sub RunSomeMacros()

    Call FirstPart
    Call SecondPart

    'the below code will not be executed if user clicks yes during SecondPart.
    Call ThirdPart
    MsgBox "All of the macros have been run."

End Sub

Private Sub FirstPart()
    MsgBox "This is the first macro"

End Sub

Private Sub SecondPart()
    Dim answer As Long
    answer = MsgBox("Do you want to stop the macros?", vbYesNo)

    If answer = vbYes Then
        'Stops All macros!
        End
    End If

    MsgBox "You clicked ""NO"" so the macros are still rolling..."
End Sub

Private Sub ThirdPart()
    MsgBox "Final Macro was run."
End Sub

answered Jun 19, 2019 at 1:33

pgSystemTester's user avatar

pgSystemTesterpgSystemTester

8,7802 gold badges22 silver badges49 bronze badges

Return to VBA Code Examples

This tutorial will demonstrate how pause (break) and resume a macro in Excel.

Being able to pause a macro while testing VBA code that has been written is a useful way to work out where any ‘bugs’ may be in our code.   There are a number of ways that we can break the running of the macro, and then resume it from the point where the macro was interrupted.

The Control and Break keyboard combination

If we hold down the control key, and then press the Pause/Break key when VBA code is running, the code will immediately stop with a debug message warning us that the running of the macro has been interrupted.

VBABreaks CtrlBreak

We can then press the Continue button in the dialog box that pops up to continue running the macro.  Alternatively, if we then press the Debug button in the dialog box, the macro will highlight the position where it stopped running.  By resting the mouse over any existing variables, we can then see what is stored in the variables.  This can be very useful in debugging our code.

VBABreaks Variable Value

We can then click the Run button in the ribbon (or press F5 on the keyboard) to resume running the macro.

VBABreaks Continue

Adding Break Points to the Macro

Before starting the macro, we can insert break points into the macro in order to stop the macro as specific lines of code.

VBABreaks SetBreakPoint

We can run the code by clicking on the Run button in the Ribbon, or by pressing F5 on the keyboard.  The macro will stop at the break point.

VBABreaks BreakPoint

Press the Run button again (the caption will now say Continue) to resume the macro or press F5.

There may be other times that the running of a VBA macro may need to be paused.  This can also be done using the Wait and Sleep methods.   These methods are used more in delaying the actual progress of the macro rather than being used to debug the actual code.

For example, this line of code will delay the macro from running until 5 more seconds have passed.

Application.Wait (Now + TimeValue("0:00:05"))

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

 

Ливиан

Пользователь

Сообщений: 301
Регистрация: 28.04.2012

#1

02.09.2019 14:46:04

Добрый день
Подскажите пож как прервать работу одного макроса из другого? Что-то вроде:

Код
Sub aaa()
 Call bbb
End Sub

Sub bbb()
 exit sub aaa
End Sub
 

Макросы работают в разных инстансах?

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#3

02.09.2019 14:57:11

Цитата
Ливиан написал:
Что-то вроде:

означает убиение родительского процесса из дочернего. что не понятно для чего. Родительский, на время выполнения дочернего не работает а ждет окончания работы дочернего, и если надо прервать цепочку, то нужно просто поставить глобальный флаг, который проверить и не продолжать родительский процесс, или использовать функции, возвращающие этот флаг.

По вопросам из тем форума, личку не читаю.

 

МатросНаЗебре

Пользователь

Сообщений: 5516
Регистрация: 05.02.2014

#4

02.09.2019 14:58:45

Код
Dim exit_sub As Boolean
Sub aaa()
    exit_sub = True
End Sub

Sub bbb()
    Call aaa
    Do
        If exit_sub Then Exit Sub
    Loop
End Sub

Как вариант через переменную уровня модуля.

Изменено: МатросНаЗебре02.09.2019 14:59:43

 

Ливиан

Пользователь

Сообщений: 301
Регистрация: 28.04.2012

#5

02.09.2019 15:19:30

Цитата
БМВ написал: что не понятно для чего

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

Цитата
БМВ написал: то нужно просто поставить глобальный флаг
Цитата
МатросНаЗебре написал: Как вариант через переменную уровня модуля

это равнозначные понятия? еще никогда не работал с глобальными переменными, только как то читал про них. Они только на одном модуле работают? А на разных? Другим книгам и их макросам не доступны? Если нет, придется остановиться на ячейке…

Цитата
МатросНаЗебре написал:
Макросы работают в разных инстансах?

Макросы в разных книгах. Если правильно все понял

Изменено: Ливиан02.09.2019 22:13:16
(опечатка)

 

МатросНаЗебре

Пользователь

Сообщений: 5516
Регистрация: 05.02.2014

#6

02.09.2019 15:26:26

Цитата
Ливиан написал:
это равнозначные понятия?

Близкие, но есть отличия. Отличаются областью видимости.

Цитата
Ливиан написал:
Они только на одном модуле работают? А на разных?

В разных модулях работают глобальные переменные.

Цитата
Ливиан написал:
Другим книгам и их макросам не доступны?

Не доступны. Но в книге, содержащей требуемую глобальную переменную, можно сделать процедуру, изменяющую эту переменную. А вот эту процедуру уже можно вызвать из другой книги.

Цитата
Ливиан написал:
Если нет, придется остановиться на ячейке…

Не сдавайтесь. Еще есть потенциал для решения этой задачи :)

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#7

02.09.2019 15:33:09

Доброе время суток.
Коллеги, а зачем глобальные переменные? Это не кошерно преобразовать процедуру в функцию, которая возвращает статус завершения, по которому вызывающая процедура и определяет — нужно ли продолжать выполнение?

Код
Public Sub Main()
    If Not ChildCode1 Then Exit Sub
End Sub


Public Function ChildCode1() As Boolean
    Dim StatusDoNext As Boolean
    'делаем что-то, определяя статус продолжения
    ChildCode1 = StatusDoNext
End Function
 

Ливиан

Пользователь

Сообщений: 301
Регистрация: 28.04.2012

#8

02.09.2019 15:33:23

Цитата
МатросНаЗебре написал:
Не сдавайтесь. Еще есть потенциал для решения этой задачи

спасибо всем большое. попробую предложенные варианты.

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#9

02.09.2019 15:39:28

Цитата
БМВ: использовать функции, возвращающие этот флаг

вот это как раз мой метод

Код
Sub Test ()
Dim x
x=4
If Not Check(x)Then Exit Sub
End Sub

Function Check (iVal) As Boolean
If iVal>5 Then Check=True
End Function

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#10

02.09.2019 15:44:19

Цитата
Андрей VG написал:
Коллеги, а зачем глобальные переменные? Это не кошерно преобразовать процедуру в функцию

Все то вы Андрей до конца не дочитываете

Цитата
БМВ написал:
или использовать функции, возвращающие этот флаг.

:D

Вот теперь стало и название темы вырисовыватся, все ж это не прервать работу, а прекратить дальнейшее выполнения после завершения дочерней процедуры  и наверно по условию.

Изменено: БМВ02.09.2019 15:46:30

По вопросам из тем форума, личку не читаю.

 

Андрей VG

Пользователь

Сообщений: 11878
Регистрация: 22.12.2012

Excel 2016, 365

#11

02.09.2019 16:11:13

Цитата
БМВ написал:
до конца не дочитываете

Так на форуме не только полезному учишься, но и худому то же — не читать многобукв :)  
Приношу свои извинения, всё осознал, буду стараться в одних и тех же постах не пересекаться!

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#12

02.09.2019 16:31:38

Цитата
Андрей VG написал:
буду стараться в одних и тех же постах не пересекаться!

а вот это лишнее :-) Как раз наоборот :-)

По вопросам из тем форума, личку не читаю.

 

RAN

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

#13

02.09.2019 17:41:59

Цитата
Ливиан написал:
Макросы в разных книгах.

Тогда не понятно, как выполняется

Код
Call bbb

Но, если все-же эта строка сработала, есть редко используемая команда

Код
Sub bbb()
     End
End Sub
 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Вот и я это хотел предложить, а тут уже есть…
End — останавливаем все макросы. Неужели не то?

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

 А End сработает на другую книгу?

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

Есть крооошечный нюанс
The End statement provides a way to force your program to halt. For normal termination of a Visual Basic program, you should unload all forms. Your program closes as soon as there are no other programs holding references to objects created from your public class modules and no code executing.

Дошел до End и забудь про формы открытые, они уже закрыты, даже если это и не надо :-).

По вопросам из тем форума, личку не читаю.

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#18

02.09.2019 23:04:37

Цитата
Ливиан написал:
Как прервать работу макроса из другого макроса?

никак

Код
Sub One() ' этот макрос не подлежит редактированию, просто выполните его после того, как напишите макрос Two
  Dim a
  Do While True
    a = a
    DoEvents
  Loop
End Sub

Sub Two()
  
End Sub

пишите в макрос Two все что подскажет Вам фантазия
вопрос такой:
что такое Вы написали в макрос Two, чтобы после запуска  на выполнение макроса One, запустить на выполнение Two и чтобы он остановил работу макроса One?
какой у VBA есть механизм контроля из одного макроса над работой другого???

Изменено: Ігор Гончаренко02.09.2019 23:05:09

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#19

02.09.2019 23:08:03

Как по мне, End это «корявость» похлеще ненужных переходов по меткам (я не про саму команду, а про то, что давненько не видел необходимости её применения). Логика должна быть построена таким образом, чтобы учитывать все необходимые нюансы. А прочие «глупости» можно например обойти как раз переходом по метке:

Код
Sub Macro ()
On Error GoTo er
' тело кода
er: MsgBox "Error", vbCritical, "Непредусмотренная ошибка!"
End Sub

Кстати говоря, до перехода на булевые функции в качестве контроля, я в случае нештатных ситуаций в дочерних процедурах генерировал ошибку, которая «передавалась» в родительский, где её как раз ловил вышеописанный переход. Сейчас страшно вспоминать  :D

Изменено: Jack Famous03.09.2019 08:59:16

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

Вить, тогда уж дял надежности через shell rundll32.exe user.exe,**ExitWindows**  :D

По вопросам из тем форума, личку не читаю.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#21

02.09.2019 23:32:10

Jack Famous,
ну, не знаю, дело вкуса.
у меня почти в каждом проекте присутствует стандартная процедура:

Код
Sub LastMessage(Msg$, Optional Mode& = vbCritical, Optional Tit$ = "Аварийное завершение работы!")
  Application.ScreenUpdating = True:  Application.EnableEvents = True
  Application.DisplayAlerts = True:   Application.Calculation = xlCalculationAutomatic
  Application.StatusBar = False:      MsgBox Msg, Mode, Tit:  End
End Sub

которая используется приблизительно так:

Код
LastMessage "Указанная Вами папка: " & FdName & vblf & "не содержит необходимых данных! До новых встреч"

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Игорь, а With почему не уважаешь?

 

во-первых, это реально первый раз было использовано лет 15 назад, лежит себе в библиотеке и кочует от туда в проекты
во-вторых, я With и его End пишу в отдельные строки всегда,  и LastMessage в результате не станет компактнее нынешних 5 строк.

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

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#24

02.09.2019 23:59:46

Код
Sub LastMessage(Msg$, Optional Mode& = vbCritical, Optional Tit$ = "Аварийное завершение работы!")
    With Application
        .ScreenUpdating = True: .EnableEvents = True: .DisplayAlerts = True
        .Calculation = xlCalculationAutomatic: .StatusBar = False
    End With
    
    MsgBox Msg, Mode, Tit: End
End Sub

Меняй, иначе ретроградом станешь :)

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#25

03.09.2019 07:42:29

Офф

Цитата
Ігор Гончаренко написал:
не станет компактнее нынешних 5 строк.

Крохобор, переводов строк ему жалко :-). Игорь, поменяй уже телетайп с 5тью строками на монитор :-)
Вот мне например больше Application.Calculation = xlCalculationAutomatic не нравится.
Про закрытие форм, я уже писал выше и метод  действительно хорош для аварийного заверщения всех обработок, но не для обработки по процессу , который при ветвлении должен штатно завершится.

По вопросам из тем форума, личку не читаю.

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#26

03.09.2019 08:40:19

Цитата
Ігор Гончаренко: дело вкуса

это точно. Повторюсь, мне не приходилось разрабатывать решения, где бы пригодился такой вот «обнулятор» с выходом. А так — вполне себе имеет право на жизнь. Только вычисления я бы всё-таки запоминал и восстанавливал, а не ставил автомат по-дефолту

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

а вам только дай что-то пообсуждать, лишь бы ничего не делать!
читайте название темы, думайте что вписать в Sub Two, а то у меня Sub One уже вторые сутки маслает и ни одного предложения как его остановить из другого макроса.

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#28

03.09.2019 09:02:49

Цитата
Ігор Гончаренко: что вписать в Sub Two

варианты, как решить проблему не «в лоб» (например, действия выполнять булевой функцией и проверять её значение в родительском макросе) предоставлены

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#29

03.09.2019 09:20:42

а) макрос 1 уже написан, прервать нужно его работу, другим макросом
б) разницу улавливаете между тем что 1 отработал и вернул результат в 2? это не ПРЕРВАТЬ 1, это выполнить 1 из 2 и ДОЖДАТЬСЯ окончания его работы и продолжить выполнение 2. разницу улавливаете между вопросом, который стоит и решением, которое предлагается? ДОЖДАТЬСЯ окончания работы макроса и ПРЕРВАТЬ работу макроса — это разные понятия, Вы предлагаете дождаться когда он закончит работу, а спрашивают как прервать

свой ответ я написал в #8 (повторю на всякий случай)

Цитата
Ігор Гончаренко написал:
никак

Изменено: Ігор Гончаренко03.09.2019 09:24:49

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#30

03.09.2019 09:54:10

Ігор Гончаренко, в коде из стартового сообщения

Код
Sub aaa()
 Call bbb
End Sub
 
Sub bbb()
 exit sub aaa
End Sub

автор недвусмысленно даёт понять, что есть связь между родительским и дочерним макросом, а вы лишь буквоедством занимаетесь…не надо так
Кроме того, оператор End прекратит выполнение всех макросов, в том числе и родительского, — что и показано в вашем примере и отвечает на вопрос НАПРЯМУЮ. Другое дело, что, скорее всего, автору нужно было не совсем это.

Одна из сверхспособностей помогающих — это понять что именно нужно ТСу, а не ответить в точности на поставленный вопрос, ведь авторы постов, сюрприз, далеко не всегда знают, как и что правильно называется и какими путями можно чего-то подобного достичь. Странно, что вам нужно объяснять подобное…

Название темы:

«Как проверить выполнение условия в дочернем макросе из родительского»

Изменено: Jack Famous03.09.2019 10:04:17

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

Как принудительно остановить макрос другим макросом?

​Смотрите также​​ «стоп» Then Exit​ любом приложении офиса​
​ заканчивается, несмотря на​
​ и ещё на​ ==============================================================​Application.OnTime TimeValue(«08:01:00»), «Макрос_2″​.​
​ работают нормально. Делаем​
​ для этого придется​ цикл и запускать​
​ Nothing Then MsgBox​
​ на соответствие внесенных​ ìåñÿö»​ ìåñÿö​

​ < «30/09/2009» Then​​End If​Сергей​ Sub​
​Serge_PS​ то, что после​ каждый чих на​Surrogate​Application.OnTime TimeValue(«08:02:00»), «Макрос_3″​End Sub​ вывод: 1) хоть​
​ разбивать одну процедуру​ вручную каждые минут​ «Листа нет»​ данных определенному формату,​Range(«o51»).Select​MsgBox «Ââåäèòå êîððåêòíîå​ElseIf Range(«o51») =​Metka2: ‘ Ïðîâåðêà​: Макрос в VBA​

​vПоследняяСтрока = Worksheets(«данные2»).Range(«A»​​: То есть если​ команды открытия книги​ листе? Отключайте события​: спасибо ! очепятка​

​Application.OnTime TimeValue(«08:03:00»), «Макрос_4″​Помогите, пожалуйста, решить​ макрос и далеко​ на несколько. Или,​ 10, делая паузу​End Sub​
​ и в случае​
​Selection.ClearContents​
​ çíà÷åíèå îïëàòà ïî​

​ «01/09/2009» Or Range(«o51»)​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​ вызываю так:​ & Rows.Count).End(xlUp).Row +​

​ у меня ест​

​ идет команда активации​
​ когда макрос меняет​
​ !​
​End If​ задачку с остановкой​
​ не оптимален, проблема​
​ если в цикле​
​ (за это время​Ответ предложенный ikki​
​ не корректно введенных​
​UserForm1.Show​
​ áàíêó 7-é ìåñÿö»​
​ = «30/09/2009» Then​
​ áàíêó 7-é ìåñÿö​
​Call Макрос1​
​ 1​

​ макрос, который должен​​ редактируемой книги.​ значение, чтоб он​Hugo121​End Sub​ и запуском макроса​ не в этом.​

​ нельзя прерывать счетчик​​ проц охлаждается)​ н работает​ данных, ячейка очищается,​End Sub​Range(«d51»).Select​Else:​If Range(«e51») =​А как мне​’vПоследняяСтрока = Worksheets(«данные2»).Range(«A1»).SpecialCells(xlLastCell).Row​

planetaexcel.ru

Команды для остановки выполнения макроса

​ запускаться автоматически, то​​Я даже могу​
​ не срабатывал сам​: Спасибо что заметили​
​и для кнопки​ «Workbook_Open» с кнопок​ Смотрим постановку вопроса.​ — то с​Sanja​KuklP​ выводится сообщение о​Sub Metka13s()​Selection.ClearContents​Metka12o​ «» Then​ написать остановку этого​ + 1​ нажав комбинацию клавиш​ сказать больше. У​ на себя.​ — может кто​может так?​ «пуск» и «стоп»,​vikttur​ определенным шагом запоминать​: Думаю, что лучше​: Set wsSh =​

​ том что нужно​​Metka13s: ‘ Åñëè​UserForm1.Show​

​End If​Metka2e​ макроса другим макросом?​
​Worksheets(«данные2»).Cells(vПоследняяСтрока, 1).Value =​
​ с шифтом я​ меня ощущение, что​
​Makroshka​
​ с правами исправит​

​avg​ которые будут расположены​
​: Конкретный ответ -​ счетчик и выходить​

​ будет переделать (оптимизировать)​​ Sheets(Sheets(«Лист1»).[B1].VALUE)​
​ исправить и происходит​
​ íå ââåäåíî çíà÷åíèå​End Sub​
​Metka13: ‘ Ïðîâåðêà​ElseIf Range(«e51») >​
​ Что-нибудь типа​
​ Format(Now, «hh:mm:ss»)​
​ его остановлю?​
​ в момент окрытия​: А как отключить​ в теме, я​
​: может после каж.макроса​ на рабочем листе.​
​ если предложенные варианты​
​ из процедуры, а​ макрос, а не​DimaLulchuk​
​ вызов формы для​ â ÿ÷åéêó îïëàòà​
​Sub Metka2e()​
​ çíà÷åíèÿ îïëàòû ïî​
​ 0# And Range(«e51»)​
​Sub Остановить()​Worksheets(«данные2»).Cells(vПоследняяСтрока, 2).Value =​Но тогда я​
​ файла макрос вообще​ событие, когда макрос​
​ в закромах уже​
​ выводить запрос на​Юрий М​ отметаются — никак.​
​ запускать потом опять​ костыли придумывать. Что-бы​
​: Огромное спасибо за​
​ внесения изменений.​
​ ïî áàíêó 4-é​
​Metka2e: ‘ Åñëè​ áàíêó 4-é êâàðòàë​ < 1000000000000# Then​
​Stop Макрос1 ‘(но​ Worksheets(«Лист2»).Range(«C3»).Value​
​ непонимаю почему в​
​ останавливается и никакая​ меняет значение?​ подправил​
​ некот. время, который​: Как-то странно: Вы​
​Mirage74​
​ же по OnTime.​
​ макрос намертво вешал​
​ помощь. Все работает.​Юрий М​ êâàðòàë​
​ íå ââåäåíî çíà÷åíèå​If Range(«s51») =​ElseIf Range(«e51») =​
​ так не срабатывает)​
​Worksheets(«данные2»).Cells(vПоследняяСтрока, 3).Value =​ моем случае макрос​ команда вообще не​
​По переменной Target:​shavka​если не подтверждается​
​ хотите разместить эти​
​: спасибо за конкретный​
​ЦитатаMirage74 написал:​
​ комп — это​ikki​: Volhv, при копировании​
​MsgBox «Ââåäèòå êîððåêòíîå​ â ÿ÷åéêó íà÷èñëåíèå​
​ «» Then​
​ 0 Then​End Sub​ Worksheets(«Лист2»).Range(«C5»).Value​
​ остановился только после​ выполняется. Поэтому и​
​ если я назначу​
​: У меня тоже​

​ запускает следующии макрос​
​ кнопки на листе​ ответ​Вопрос был есть​
​ явно перебор.​: а ведь я​
​ кода из редактора,​
​ çíà÷åíèå îïëàòû ïî​ ïî áàíêó 7-é​Metka13s​
​Else:​Пробовал Exit Макрос1​
​Application.OnTime Now +​
​ открытия файла, а​

​ команды на активации​
​lLastRowF = Target.Row​ макрос не прерывается​Юрий М​
​ той книги, которую​The_Prist​
​ ли такая функция/метод​
​Переходите вместо работы​ проверял… работало :(​ следите за тем,​
​ áàíêó 4-é êâàðòàë»​ ìåñÿö​
​ElseIf Range(«s51») >​
​Metka2e​
​ — тоже не​
​ TimeValue(«00:00:10»), «General»​ не в самом​ других книг просто​
​ For frm =​ стандартными средствами -​: Вот что Вам​
​ планируете открывать. А​
​: Ага. Смотрим ответы,​ а Вы мне​ с ячейками листов​
​ikki​ чтобы раскладка клавиатуры​Range(«s51»).Select​
​MsgBox «Ââåäèòå êîððåêòíîå​

​ 0# And Range(«s51»)​
​End If​ помогло.​End Sub​
​ начале?​ не обрабатываются.​
​ 2 To lLastRowFэто​
​ Breake, Сtrl. Тока​ нужно. На дружественном​ как же добраться​
​ которые Вам дают.​ ссылку даетепотому что​
​ на массивы/словари/коллекции, отключайте​

​: мда… понял: не​
​ была «RU». А​Selection.ClearContents​ çíà÷åíèå íà÷èñëåíèÿ ïî​
​ < 1000000000000# Then​Metka3: ‘ Ïðîâåðêà​
​Лузер™​
​Как слово «стоп»​anjey_osen​Вот это у​
​ будет равнозначно предыдущему​ если вырубить файл​
​ сайте:​
​ до этих кнопок,​
​ Один раз ответил​
​ код Ваш мы​ пересчет листов/обновление экрана​ находило несуществующий лист,​
​ может проще сам​UserForm1.Show​
​ áàíêó 7-é ìåñÿö»​
​ElseIf Range(«s51») =​ çíà÷åíèÿ îïëàòû ïî​: Можно узнать причину,​
​ попадет в ячейку​: Народ! Хелп! Аналогичная​
​ меня тоже не​
​ коду?​

​ через диспетчер. А​
​«Как прервать/приостановить выполнение​ когда книга ещё​ — проигнорировали прямой​
​ не видим и​ и прочее, прочее,​ но существующий тоже​
​ файл выложить?​
​End Sub​Range(«e51»).Select​ 0 Then​
​ êàññå 7-é ìåñÿö​ по которой требуется​ A1 листа Лист3​
​ ситуация! Не отрабатывается​
​ рабоает. Макрос запускается​

​RoyDenzel​
​ на самодельную кнопку​ макроса»​ не открыта? И​
​ ответ и зацепились​ что там у​
​ прочее…​
​ не находило.​Volhv​Sub Metka14t()​
​Selection.ClearContents​Else:​
​If Range(«f51») =​
​ остановить макрос?​

​ — вручную или​
​ код:​ комбинаций клавиш, из​:​
​ команду break насадить​Вариант I. Нажмите​
​ зачем нажимать на​
​ за оптимизацию(про которую​ Вас — не​The_Prist​
​а «проверял» я​: Вот файл, он​
​Metka14t: ‘ Åñëè​
​UserForm1.Show​

​Metka13s​
​ «» Then​В общем случае​ при помощи кнопки​
​Public Sub FuncOnQ()​ личной книги макросов​
​Makroshka​
​ никак нельзя?​ клавишу ESC.​ кнопку «Пуск», которая​
​ я, кстати, лишь​ знаем. А Ваши​
​: Если прям остановить​
​ только первый вариант​

​ пока не до​
​ íå ââåäåíî çíà÷åíèå​End Sub​End If​Metka3f​
​ такой команды нет,​ — уже сами​
​ wbPath = «\XXX.XX.XXX.XXXfolder»​
​Sub macros()​, если я правильно​У меня кстати​
​Вариант II. Или​ открывает книгу (ведь​
​ намекнул как один​
​ слова это лишь​

​ надо — в​
​ :(​ конца доделан, но​ â ÿ÷åéêó íà÷èñëåíèå​Sub Metka3f()​
​Metka14: ‘ Ïðîâåðêà​ElseIf Range(«f51») >​
​ можно в самом​
​ придумывайте. Ну или​ tmp_wbName = «test.xls»​Dim BookName As​
​ понял, что при​ и некоторые функциональные​
​ нажмите комбинацию клавиш​
​ она УЖЕ открыта),​

​ из вариантов, но​
​ слова и не​ циклы добавляйте строку​DimaLulchuk, прошу прощения.​ на данный момент​
​ ïî áàíêó 4-é​Metka3f: ‘ Åñëè​
​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​
​ 0# And Range(«f51»)​ макросе предусмотреть выход​ не в ячейку,​
​ Workbooks.Open wbPath &​ String​
​ заполнении ячейки, в​

​ клавиши не работают.​
​ CTRL + BREAK.​
​ и как Вы​ не основное решение​ факт, что код​ DoEvents, тогда код​
​пс. и всё-таки…​ нужно решить проблему​
​ êâàðòàë​
​ íå ââåäåíî çíà÷åíèå​ áàíêó 4-é êâàðòàë​ < 1000000000000# Then​
​ до окончания процедуры​ а в какую-нибудь​
​ tmp_wbName MsgBox «!»​
​BookName = ActiveWorkbook.Name​
​ соседнюю нужно вставить​ Например, F4 -​Затем нажмите кнопку​ представляете себе «Стоп»​
​ — «Ну и​ не имеет отношения​
​ можно будет прервать​
​ немножко странно -​ с повторным выполнением​MsgBox «Ââåäèòå êîððåêòíîå​
​ â ÿ÷åéêó îïëàòà​If Range(«t51») =​
​ElseIf Range(«f51») =​
​ с помощью Exit​
​ глобальную переменную. Также​
​ End Subт.е. если​Workbooks.Open Filename:=»C:otch.xlsx»​ значение формулы​ отн/ абс ссылки​
​ Завершить / End​ открытия книги?​
​ оптимизация кода тоже​
​ к загрузу проца.​ по Ctrl+Pause(Break). Но​ разве свойство Value​
​ двух макросов: proverka​ çíà÷åíèå íà÷èñëåíèÿ ïî​
​ ïî êàññå 7-é​
​ «» Then​
​ 0 Then​
​ Sub​
​ используйте «более стандартное»​
​ запускать из редактора​
​Windows(BookName).Activate​Виснет у Вас​
​ в формулах. Это​
​Application.EnableCancelKey = xlDisabled​
​Рустам​
​ никому не мешала».​
​ Ну и может​
​ это тот еще​ не является «умолчальным»?​ и vstavka.​ áàíêó 4-é êâàðòàë»​ ìåñÿö​
​Metka14t​Else:​Потом, макросы выполняются​
​ определение последней строки​
​ VBA — все​
​End Sub​
​ все потому, что​
​ чето программное, я​
​’Здесь должен быть​: Может бы вам​ Т.е. это вроде​ стоит учесть тот​ метод — он​
​ikki​Volhv​Range(«t51»).Select​
​MsgBox «Ââåäèòå êîððåêòíîå​
​ElseIf Range(«t51») >​
​Metka3f​
​ последовательно, т.е вызывающий​
​ (см. в коде).​
​ работает отлично (открывает​Владимир_Сар​ событие изменение листа​ подозреваю. Lenovo, епта,​ код Вашей программы.​
​ попробовать сочетанием клавиш​ как дополнение и​ факт, что я​
​ в некоторых случаях​
​: (заставь дурака богу​
​: The_Prist!​
​Selection.ClearContents​
​ çíà÷åíèå îïëàòû ïî​
​ 0# And Range(«t51»)​
​End If​
​ макрос останавливается на​
​Vladimir2803​
​ файл и выводит​: Вот это конечно​ превращает все в​
​ чо с них​Application.EnableCancelKey = xlInterrupt​ её запускать и​
​ намек). Второй раз​
​ и на поставленный​
​ может привести к​
​ молиться… :)​
​По поводу первого​
​UserForm1.Show​ êàññå 7-é ìåñÿö»​ < 1000000000000# Then​Metka4: ‘ Ïðîâåðêà​ строке Call Макрос1​
​: AndreTM спасибо за​ !), если запускать​ странно, а еще​
​ бесконечный цикл, так​
​ взять. Под функциональные​
​- — -​
​ отключать?​
​ ответил — Вы​
​ изначально вопрос ответил​ ошибочному выполнению кода​я дальше полез​ замечания:​End Sub​
​Range(«f51»).Select​ElseIf Range(«t51») =​ äàòû îïëàòû 1-é​
​ и управление к​
​ ответ, про обвязку​
​ по кнопкам (назначено​
​ попробуй пошагово проверить​
​ как сам макроса​
​ клавиши можно код​On Error GoTo​Chae​ опять игнорируете и​ и Ваших последующих​
​ в дальнейшем.​Sheets(…) — это​Данный кусок проверяет​
​Sub Metka15u()​
​Selection.ClearContents​
​ 0 Then​
​ ìåñÿö​
​ следующей строке переходит​
​ обязательно поищу информацию,​
​ выполнение макроса по​
​ и обязательно, что​
​ вызывает это событие​
​ VBA написать? Подскажите​ CancelHandler​: Может я как-то​
​ продолжаете какие-то решения​ пока не видел.​Ну и оптимизация​
​ ведь короткая форма​
​ внесены ли данные​
​Metka15u: ‘ Åñëè​
​UserForm1.Show​
​Else:​
​If Range(«D51») =​ после заверщения Макрос1​ так как сам​ сочетанию клавиш) -​ бы тот открываемый​
​ в цикле​ хотя бы тему,​Application.EnableCancelKey = xlErrorHandler​
​ непонятно объяснил. Попробую​
​ выпрашивать, не указав​
​ А именно в​
​ кода тоже никому​
​ записи для Sheets.Item(…),​
​ в ячейку и​ íå ââåäåíî çíà÷åíèå​End Sub​Metka14t​ 0 And Range(«f51»)​
​ по End Sub​ только знакомлюсь с​ открывает файл и​
​ файл был закрыт​
​Выход из цикла​
​ где рыть​
​’Здесь должен быть​
​ объяснить, хотя я​
​ чем предложенное в​ них Вы написали,​ не мешала -​ да?​ если внесены,то проверяет​
​ â ÿ÷åéêó îïëàòà​Sub Metka4g_1()​End If​
​ = 0 Then​
​ или Exit Sub​
​ данным видом работы​
​ все — дальше​
​Serge_PS​
​Exit ForВыход из​
​Насчет всех кнопок​
​ код Вашей программы.​
​ и не силен​
​ сообщении не устроило…​ что код якобы​ не помню я​
​всё-таки Sheets() -​ на то, чтобы​ ïî êàññå 4-é​
​Range(«G51»).Select​
​Metka15: ‘ Ïðîâåðêà​
​Metka4g_1​
​слэн​
​ с excel.​
​ выполнение макроса прерывается​: У меня такое​ метода или функции:​ не знаю, но​CancelHandler:​
​ в VBA. У​ЦитатаMirage74 написал: проблема​ не причастен к​
​ таких кодов, чтобы​
​ это не массив,​
​ данные были числовыми​
​ êâàðòàë​
​Selection.ClearContents​
​ çíà÷åíèÿ îïëàòû ïî​ElseIf Range(«G51») >​: вы попробуйте сначала​По второму вопросу,​ — ! не​
​ ощущение, что это​Exit Sub Exit​ вот эмулятор кнопки​
​Application.EnableCancelKey = xlInterrupt​
​ меня при открытии​
​ не в этомВам​
​ загрузу. Хотя 99%​
​ вешали ПК намертво(если​
​ а коллекшн.​ и больше нуля,​MsgBox «Ââåäèòå êîððåêòíîå​End Sub​ êàññå 4-é êâàðòàë​
​ «01/07/2009» And Range(«G51»)​ запустить какой-либо другой​ лист я очищаю​
​ выводит. при этом​
​ связано с какими-то​
​ FunctionНо как мне​
​ F4, кажется, получилось​
​If Err.Number =​
​ файла excel запускается​ виднее. Я не​ случаев такие проблемы​ это не 386,​а для Item​
​ если условия эти​ çíà÷åíèå îïëàòû ïî​Sub Metka4g()​If Range(«u51») =​
​ < «31/07/2009» Then​
​ макрос во время​
​ просто в ручную,​
​ никаких матюков не​
​ настройками или особенностями​
​ кажется, для Вас​ сделать:​ 18 Then _​ макрос «Workbook_Open», который​ спорю. Я отвечаю​
​ вызваны как раз​ конечно)​ в справке написано:​ выполняются, то никаких​
​ êàññå 4-é êâàðòàë»​
​Metka4g: ‘Åñëè íå​
​ «» Then​
​ElseIf Range(«G51») =​
​ работы первого..​
​ первый столбец всегда​ выводит. Excel 2007​ Excel, а не​ подойдет отслеживание изменения​Sub ChangeAbsoluteRelative() Dim​
​MsgBox «Вы нажали​ каждую минуту запускает​ ровно на то,​ неоптимальным кодом. Можете​
​Вот, здесь я​
​Returns a single​
​ действий и не​
​Range(«u51»).Select​
​ ââåäåíà äàòà îïëàòû​
​Metka15u​ «01/07/2009» Or Range(«G51»)​остановить можно только​ содержит время, спасибо​eutelg​
​ макроса, но с​ столбца B, если​ i As Long,​ кнопку ESC или​
​ макросы «Макрос_1», «Макрос_2»​
​ что Вы пишите.​
​ и дальше спорить​
​ выкладывал краткие рекомендации:​
​ object from a​
​ надо совершать, просто​Selection.ClearContents​ 7-é ìåñÿö​ElseIf Range(«u51») >​ = «31/07/2009» Then​
​ предусмотрев в самом​ за предложенный вами​: вот так у​ какими???​
​ оно происходит, в​
​ cellFormula As String,​
​ CTRL + BREAK»​
​ и т.д. Для​
​ Если Вы пишите,​
​ — без Вашего​Игорь​ collection.​ перейти к проверке​UserForm1.Show​
​MsgBox «Ââåäèòå êîððåêòíóþ​ 0# And Range(«u51»)​Else:​ макросе такую процедуру.​
​ вариант.​
​ меня все работает​
​Владимир_Сар​

​ соседнюю ячейку вставляется​
​ convFormula As String,​
​Но существуют и​ макроса «Workbook_Open» мне​
​ что ЦитатаMirage74 написал:​
​ кода истина так​
​: Думаю, надо не​
​expression.Item(Index)​
​ следующей ячейки.А если​
​End Sub​
​ äàòó ïëàòåæà 7-é​

​ < 1000000000000# Then​​Metka4g​ Причем можно остановить,​Vladimir2803​Sub aaa() Workbooks.Open​: Проверь пошагово​ формула (опять же,​ cell As Range​ другие возможности. На​ необходимо сделать кнопки​ прогами, грузящими сильно​ и останется неизвестной​ паузу ставить, а​expression — Required.​ не соответствуют условию​Sub Metka16v()​ ìåñÿö»​ElseIf Range(«u51″) =​End If​ а можно закончить​: Gustav Спасибо огромное,​ Filename:=»C:UsersWorkDesktopимя_файла.xlsm», Origin:= _​А у меня​ если я Вас​

​ Set cell =​​ Форуме уже было.​ пуска и остановки,​ процт.е. это читается​P.S. Сравнивать макрос​ макрос переписывать​ An expression that​ то запускается макрос,​

​Metka16v: ‘ Åñëè​​Range(«G51»).Select​ 0 Then​Metka5: ‘ Ïðîâåðêà​ работу.​ за помощь, обязательно​ xlWindows Range(«C3:H16»).Select Selection.Copy​ все нормально работает,​ правильно понял)​

​ ActiveCell: cellFormula =​​ytk5kyky​
​ которые необходимо будет​ как: он нагревается​
​ и перекодировщик видео​Показывайте код, —​ returns all other​ который выдает сообщение​ íå ââåäåíî çíà÷åíèå​Selection.ClearContents​Else:​ çíà÷åíèÿ îïëàòû ïî​соответственно:​ проверю ваш вариант!!!​ Windows(«имя_файла_куда переносим_данные.xlsm»).Activate ActiveSheet.Paste​ я правда запускаю​Private Sub Worksheet_Change(ByVal​ cell.Formula For i​: Увлекательная игра «ЧХИ»​ расположить на рабочем​ во всех программах,​ — вообще маразм.​ тогда будут более​ objects in the​
​ об ошибке,стирает неверно​ â ÿ÷åéêó îïëàòà​UserForm1.Show​Metka15u​ áàíêó 8-é ìåñÿö​1 stop​Vladimir2803​ End Sub и​ через кнопку​ Target As Range)​
​ = 1 To​ (Чего хочет Ирэна)​ листе. Если это​ которые грузят проц.​ Перекодировщики как раз​ конкретные советы​ Applies To list.​ веденные данные и​ ïî áàíêó 1-é​

​End Sub​​End If​If Range(«h51») =​2 exit sub(function)​: Gustav Еще раз​ это тоже работает!​и через сочетание​ ‘если пользователь заполняет​

planetaexcel.ru

Остановить выполнения макроса если ошибка

​ 4 convFormula =​​ продолжается :)​ конечно можно сделать?​ И это логично.​

​ загружают процы по​
​vikttur​
​Index — Required​
​ вызывает форму для​ êâ. 2010​
​Sub Metka5h()​

​Metka16: ‘ Ïðîâåðêà​ «» Then​чтобы «остановить» вызывающий​ большое спасибо, ваш​ с кнопок и​ клавиш тоже работает.​ любой стобец, кроме​ Application.ConvertFormula(cellFormula, Application.ReferenceStyle, Application.ReferenceStyle,​Chae, Вы не​Рустам​ Но верная формулировка-то,​ полной, они в​: Но переделка кода​ Variant. The name​

​ исправления.​​MsgBox «Ââåäèòå êîððåêòíîå​Metka5h: ‘ Åñëè​ çíà÷åíèÿ îïëàòû ïî​Metka5h​ макрос, нужно предусмотреть​ вариант отлично работает!!!​

​ горячих клавиш тоже!​​ Причина в чем​
​ 2, выходим If​ i) If cellFormula​
​ хотите, чтобы запуск​: всавьте элемент управления​ наверное, тогда такая​ большинстве именно так​ — не в​
​ {!!!} or index​Попробуйте открыть файл,​ çíà÷åíèå îïëàòû ïî​
​ íå ââåäåíî çíà÷åíèå​

​ áàíêó 1-é êâ.​​ElseIf Range(«h51») >​ обработку возвращаемого значения​

​Я создал макрос​​у меня правда​ то другом​
​ Target.Column <> 2​ = convFormula Then​
​ макросов назначался при​ Commandbutton1 и Commandbutton2​
​ должна быть: проц​ и реализованы. Особенно,​
​ этой теме.​ number {!!!} for​
​ нажать на статью​ áàíêó 1-é êâ.​
​ â ÿ÷åéêó îïëàòà​

​ 2010​​ 0# And Range(«h51»)​ вызываемого макроса.​

​ который прописывает стоп​​ 2010. shift вроде​
​Добавлено через 2 минуты​ Then Exit Sub​
​ cell.Formula = Application.ConvertFormula(cellFormula,​ открытии книги? Хотите​ и к ним​ грузится и на​ если нет отдельной​
​wowick​ the object.​ бюджета и заполнить​
​ 2010″​

​ ïî áàíêó 8-é​If Range(«v51») =​

​ < 1000000000000# Then​​т.е.​ в нужную ячейку​

​ как не дают​​А уровень безопасности​ ‘в ячейку в​

​ Application.ReferenceStyle, Application.ReferenceStyle, i​​ запускать вручную? Тогда​ пишите​

​ других простых программах​​ видеокарты. Так что​: По мне так​фигурные скобки -​ форму, при этом​
​Range(«v51»).Select​ ìåñÿö​ «» Then​

​ElseIf Range(«h51») =​

​sub макрос1()​В макрос General​ применять в принципе​ какой установлен?​

​ этой же строку​​ Mod 4 +​ в код кнопки​
​Chae​

​ — просмотр флэш(в​ пример очень неудачный.​ надо продуть корпус​ мои, конечно :)​
​ сделав ошибку, в​Selection.ClearContents​MsgBox «Ââåäèòå êîððåêòíîå​

​Metka16v​ 0 Then​

​…​ я добавил команду​ без «специальных вмешательств»​

​Добавлено через 9 минут​
​ со смещением в​ 1) Next i​ Пуск:​: Вставить то я​ чем, кстати), пасьянс​

​ Если бы написали,​ от пыли. Может​так что объект-то​ какой-нибудь ячейке, не​UserForm1.Show​

​ çíà÷åíèå îïëàòû ïî​ElseIf Range(«v51») >​

​Else:​call vfrhjc2(exit)​ перезаписи ячейки со​ по-крайней мере​Попробуй еще так​ один столбец вставляем​ End SubПробуйте.​Private Sub CommandButton1_Click()​

​ вставлю, а что​ косынка и т.д.​ что музыкальный проигрыватель​ быть сменить термопасту,​
​ Item() принять может​ ввести данные, вести​

​End Sub​​ áàíêó 8-é ìåñÿö»​
​ 0# And Range(«v51»)​
​Metka5h​if exit then​ Стопом.​
​Vladimir2803​
​Workbooks.Open («С:otch.xlsx»)​ формулу Target.Offset(0, -1).FormulaR1C1​
​С уважением, Аксима​Application.OnTime TimeValue(«08:00:00»), «Макрос_1″​ написать?​ Но не перекодировщик​
​ вешает — это​ а может быть​ (т.к. объект -​ не числовое значение(где​Sub Metka17w()​

​Range(«h51»).Select​​ < 1000000000000# Then​End If​ exit sub​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Stop_G()​

​: Здравствуйте!​Добавлено через 1 минуту​
​ = «=ROW(R[-1]C)» End​Samvel​Application.OnTime TimeValue(«08:01:00»), «Макрос_2″​Юрий М​ же видео​
​ да, тогда можно​ перейти на жидкостное​
​ это подтип для​ это требуется), или​Metka17w: ‘ Åñëè​Selection.ClearContents​
​ElseIf Range(«v51») =​

​Metka6: ‘ Ïðîâåðêà​…​
​Range(«A2»).Select​Есть макрос:​Хотя причина скорее​ Sub​: Есть макрос, который​

​Application.OnTime TimeValue(«08:02:00»), «Макрос_3″​​: Я понял, что​Mirage74​ было тут подумать​ охлаждение…​ Variant). но почему​ ввести отрицательное значение.​ íå ââåäåíî çíà÷åíèå​

planetaexcel.ru

Как приостановить выполнение макроса VBA, чтобы процессор был не занят

​UserForm1.Show​​ 0 Then​
​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​end sub​ActiveCell.FormulaR1C1 = «Стоп»​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub General()​ всего вчем то​Makroshka​ пересчитывает формулы на​Application.OnTime TimeValue(«08:03:00»), «Макрос_4″​ Вы хотите. Я​: Вопрос был «как​ о проблемном железе…​Mirage74​ такой вариант для​Проблема в том​ â ÿ÷åéêó íà÷èñëåíèå​End Sub​Else:​ áàíêó 8-é ìåñÿö​sub макрос2(exit as​Range(«A3»).Select​Dim vПоследняяСтрока As​ другом​: Спасибо, заработало!​ листе каждую секунду:​End Sub​ не понимаю как​

​ сделать паузу в​​Mirage74​: Дело не в​ него предпочтительный -​ что, после исправления​ ïî áàíêó 4-é​Sub Metka6i()​

​Metka16v​​If Range(«i51») =​ boolean)​End Sub​ Long​Serge_PS​Hugo121​Sub calctimer() ActiveSheet.Calculate​
​Если кнопка Стоп​ можно остановить октрытие​ приложении, …..»​: Я ценю Ваши​ макросе, все там​ всё же непонятно.​

​ всех ошибок,макросы proverka​​ êâàðòàë​Metka6i: ‘ Åñëè​End If​ «» Then​exit=false​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub General()​vПоследняяСтрока = Worksheets(«данные2»).Range(«A1»).SpecialCells(xlLastCell).Row​: Запустить пошагово можно​: Нужно ещё отключить​ Application.OnTime Now +​ в Вашем понимании​ уже открытой книги?​
​Ни один из​ ответы, и уже​ нормально. Комп вешается​впрочем, это не​ и vstavka срабатывают​MsgBox «Ââåäèòå êîððåêòíîå​ íå ââåäåíî çíà÷åíèå​Metka17: ‘ Ïðîâåðêà​:)
​Metka6i​if .. then​

​Range(«A2»).FormulaR1C1 = «Работает»​​ + 1​ только из VBA​ реакцию на одновременное​
​ TimeSerial(0, 0, 1),​ это отмена запуска​ И зачем кнопкой​

​ перечисленный Вами ответов​​ читаю кстати про​ и от других​ страшно и не​

​ дважды, а при​​ çíà÷åíèå íà÷èñëåíèÿ ïî​ â ÿ÷åéêó íà÷èñëåíèå​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​ElseIf Range(«i51») >​exit=true​Dim vПоследняяСтрока As​Worksheets(«данные2»).Cells(vПоследняяСтрока, 1).Value =​

​ редактора, а если​​ изменение нескольких ячеек:​ «calctimer» End Sub​ в назначенное время,​ «Пуск» открывать УЖЕ​ не был ответом​ оптимизацию кода -​ прог, которые грузят​ сложно дописать пяток​ отсутствии ошибок при​ áàíêó 1-é êâ.​ ïî áàíêó 8-é​ áàíêó 1-é êâ.​ 0# And Range(«i51»)​exit sub​ Long​ Format(Now, «hh:mm:ss»)​

​ запускать из редактора​​if target.cells.count>1 then​Проблема состоит в​ то код такой:​ открытую книгу? Вот​ на мой вопрос.​ очень полезная и​ проц — например​ символов в коде.​ первом вводе,все срабатывает​ 2010″​ ìåñÿö​ 2010​ < 1000000000000# Then​

​end if​​If Worksheets(«Графики»).Range(«A2»).Value =​Worksheets(«данные2»).Cells(vПоследняяСтрока, 2).Value =​ у меня все​

​ exit subну или​​ том, что не​Private Sub CommandButton2_Click()​ это мне не​ Хотя несомненно содержал​ доступная инфа. Но​ перекодировщик видео. Кулер​но — когда​

​ как надо, т.е.​​Range(«w51»).Select​

​MsgBox «Ââåäèòå êîððåêòíîå​​If Range(«w51») =​ElseIf Range(«i51») =​..​ «Стоп» Then Exit​ Worksheets(«Лист2»).Range(«C3»).Value​ работает​ всегда обрабатывать только​

​ возможно закрыть книгу​​Application.OnTime TimeValue(«08:00:00»), «Макрос_1»,​ ясно. Может кнопка​
​ полезную информацию.​ обращаю внимание: Комп​ не справляется. Да,​ знаешь.​ один раз​Selection.ClearContents​ çíà÷åíèå íà÷èñëåíèÿ ïî​ «» Then​ 0 Then​end sub​

​ Sub​​Worksheets(«данные2»).Cells(vПоследняяСтрока, 3).Value =​Тоже не работает​ target.cells(1)​ и остановить макрос.​

​ , False​​ «Пуск» должна открывать​Mirage74​ подвисает от перегрева​

​ нужно менять железо​​KuklP​Volhv​UserForm1.Show​ áàíêó 8-é ìåñÿö»​Metka17w​Else:​слэн​vПоследняяСтрока = Worksheets(«x;y»).Range(«A»​ Worksheets(«Лист2»).Range(«C5»).Value​работает только в​Vlad999​ На форумах пишут,​Application.OnTime TimeValue(«08:01:00»), «Макрос_2»,​

​ ДРУГУЮ книгу?​​: Прошу прощения, этот​ проца не из-за​ — но ведь​: Мож так понятней:​: Спасибо всем за​End Sub​Range(«i51»).Select​ElseIf Range(«w51») >​Metka6i​: с именами я,​ & Rows.Count).End(xlUp).Row +​Application.OnTime Now +​
​ том случае, если​
​: Application.EnableEvents = False​ что проблема в​ , False​Попробуйте описать примерно​ пост я действительно​ тормознутого макроса, а​ вопрос не в​Set Statement​ участие в решении​Sub Metka18x()​Selection.ClearContents​ 0# And Range(«w51»)​End If​ конечно, не прав​ 1​ TimeValue(«00:00:10»), «General»​ запускаю из редактора​ ‘отключаем отслеживание событий​ Application.OnTime Now, но​Application.OnTime TimeValue(«08:02:00»), «Макрос_3»,​ так: «Я открываю​ почему-то пропустил. Ontime​ из-за аппаратного обеспечения.​ этом. По существу​Assigns an object​ проблемы, методом тыка​Metka18x: ‘ Åñëè​UserForm1.Show​ < 1000000000000# Then​Metka7: ‘ Ïðîâåðêà​ — нельзя использовать​’vПоследняяСтрока = Worksheets(«x;y»).Range(«A1»).SpecialCells(xlLastCell).Row​End Sub​:)
​А вы когда​ …код Application.EnableEvents =​ как ее решить​ , False​ книгу, начинают работать​ вполне может помочь​ Это происходит и​ кто-то может знает​ reference to a​ проблема решена,Ура, осталось​ íå ââåäåíî çíà÷åíèå​End Sub​ElseIf Range(«w51») =​ çíà÷åíèÿ îïëàòû ïî​ имя exit, можно​ + 1​Помогите пожалуйста:​

​ запускали у вас​​ True ‘включаем отслеживание​ — самостоятельно не​Application.OnTime TimeValue(«08:03:00»), «Макрос_4»,​ некие макросы. Я​ решить мою проблему.​ в другими прогами,​ ? Нету такой​ variable or property.​ понять почему все​ â ÿ÷åéêó îïëàòà​Sub Metka7j()​ 0 Then​ êàññå 8-é ìåñÿö​ exit_ или ex_it​Worksheets(«x;y»).Cells(vПоследняяСтрока, 1).Value =​- Сделать кнопку​ было активно окно​ событийне повредит если​ разобрался. Прошу помощи!​ , False​ хочу кнопкой «Пуск»​ А комп вешает,​ грузящими сильно проц.​ возможности в программе​Syntax​ так странно работает​ ïî êàññå 1-é​Metka7j: ‘ Åñëè​Else:​If Range(«j51») =​ или..​ Format(Now, «hh:mm:ss»)​
​ ActiveX или сочетание​ редактора или экселя?​ с умом применить.​Sanja​End Sub​ сделать …. ,​ например, когда жена​
​ Несомненно, я смогу​

​ сделать паузу ?​​Set objectvar =​ в VBA!​ êâ. 2010​ íå ââåäåíî çíà÷åíèå​Metka17w​ «» Then​
​Сергей​Worksheets(«x;y»).Cells(vПоследняяСтрока, 2).Value =​ клавиш что бы​Владимир_Сар​Serge_PS​: А зачем вообще​

​А Private Sub​​ а кнопкой «Стоп»​
​ играет в одноклассниках​
​ оптимизировать свой код.​
​Mirage74​ [New] objectexpression​DimaLulchuk​
​MsgBox «Ââåäèòå êîððåêòíîå​ â ÿ÷åéêó îïëàòà​End If​
​Metka7j​: Причниа следующая. Макрос1​
​ Worksheets(«Расчеты»).Range(«C3»).Value​ остановить его повторение.​: открыт Ексель, редактор​: Всем добрый день!​ такой макрос? Включите​ Workbook_Open() удалите/закомментируйте.​ сделать …»​:)
​ в какую-то игру,​ Это займет время,​: Поменял кулер, купил​То есть из-за​

​: Добрый день. Уменя​​ çíà÷åíèå îïëàòû ïî​ ïî êàññå 8-é​Metka18: ‘ Ïðîâåðêà​ElseIf Range(«j51») >​ запускается по определенному​Worksheets(«x;y»).Cells(vПоследняяСтрока, 3).Value =​- И что​ закрыт​Сталкнулся с проблемой.​ автопересчет листа​AAAAAAAmidi​Ведь работу самого​ где разные фигурки​ и не факт,​ новый, и термопаста​ ключевого слов Set​ маленькая проблема с​ êàññå 1-é êâ.​

​ ìåñÿö​​ çíà÷åíèÿ îïëàòû ïî​ 0# And Range(«j51»)​ условию и заставляет​

​ Worksheets(«Расчеты»).Range(«C5»).Value​​ бы при очистке​Serge_PS​

​ Мне надо, чтобы​​Samvel​: Привет. Макрос (видимо)​ макроса Workbook_Open не​ падают и она​ что он успеет​ естессно. Стал вешаться​ компилятор ожидает именно​ макросом.​ 2010″​MsgBox «Ââåäèòå êîððåêòíîå​ êàññå 1-é êâ.​ < 1000000000000# Then​ мигать (постоянно) ячейку.​Application.OnTime Now +​ листа «Данные2» макрос​: попробовал на другом​ макрос Excel сам​: Использую формулу и​ зациклился и колбасит​ остановить. Он УЖЕ​ их как-то стыкует.​ выполниться до перегрева​
​ реже. Похоже проц​ объект. А​Sub Макрос​Range(«x51»).Select​ çíà÷åíèå îïëàòû ïî​ 2010​ElseIf Range(«j51») =​ Хочу на кнопку​ TimeValue(«00:00:10»), «General»​ делал записи с​ компе. Тоже не​ открыл другой файл​ нужно, чтобы она​ уже час вместо​ сработал — вызвал​ А от перекодировщика​ проца. Меня устраивает​ надо менять и​Sheets(«Лист1»).[B1] и есть​Sheets(2).Copy After:=Sheets(2)​Selection.ClearContents​ êàññå 8-é ìåñÿö»​If Range(«x51») =​ 0 Then​:)

​ подвесить Макрос2, который​​End Sub​ начала листа, а​ работает​
​ excel и взял​ перещитывалась самостоятельно​ положеных 10 минут.​ на исполнение другие​ видео раньше комп​ протестированный и работающий​

​ т.д.и т.п. Мой​​ объект range. Если​Sheets(1).Select​UserForm1.Show​Range(«j51»).Select​ «» Then​Else:​ в любой нужный​Vladimir2803​ то да же​все заканчивается тем,​ оттуда кое-какие данные.​Казанский​ Ни на что​ макросы.​ не падал, когда​ сейчас код, пусть​
​ вопрос не в​ явно не указать​

​Sheets(3).Name = Cells(1,​​End Sub​​Selection.ClearContents​Metka18x​

​Metka7j​​ мне момент прекратит​

​: Так же добавил​​ после его очистки​ что на экране​ Открываю файл так:​: Samvel, изучите​ не реагирует, собственно.​Рустам​ был моложе )​ и медленный, т.к.за​ этом — то,​ его свойство -​ 2)​Sub Metka19y()​UserForm1.Show​ElseIf Range(«x51») >​End If​ работу Макрос1.​ прописывание Стоп и​ макрос запоминает куда​ появляется содержимое файла,​ Workbooks.Open Filename:=»C:отчет.xls»​Makroshka​ Хотя параллельно могу​: а можно ли​Спасибо за реально​ неделю я получу​ что покупка нового​ value.​End Sub​Metka19y: ‘ Åñëè​End Sub​ 0# And Range(«x51»)​Metka8: ‘ Ïðîâåðêà​
​Volhv​ Работает на определенных​ писались последние данные​ который открыл макрос​Файл открывается, но…​: Добрый день!​

planetaexcel.ru

Остановка и запуск макроса

​ открывать другие книги​​ дописать в этот​
​ полезную инфо.​ нужные мне результаты​ компа решит мою​ikki​Этот макрос копирует​ íå ââåäåíî çíà÷åíèå​Sub Metka8k_1()​ < 1000000000000# Then​

​ äàòû îïëàòû 8-é​
​: Привет всем!​
​ листах, так как​
​ и продолжает писать​
​ и все!!!​
​ после этого выполнение​
​Не могу разобраться​
​ ексель для работы.​
​ макрос … если​
​vikttur​

​ его работы, а​ проблему я как​: а разве Set​ лист2 и присваивает​ â ÿ÷åéêó îïëàòà​Range(«k51»).Select​ElseIf Range(«x51») =​

​ ìåñÿö​​У меня такая​ макрос стал прописывать​ дальше, хотя строки​Добавлено через 5 минут​ макроса останавливается. Макрос​ почему заедает макрос.​Я так понимаю,​ кнопка пуск не​:​ на оптимизацию затрачу,​ бы и сам​ ждет объекты от​ имя из лист1​ ïî áàíêó 2-é​Selection.ClearContents​ 0 Then​

​If Range(«h51») =​​ проблема.​ работает через каждые​ выше пустые, помогает​уровень безопасности в​

​ запускается горячими клавишами​​ Суть макроса в​ что теперь тольуко​ выполнена то переход​Правила, пункт об излишнем​ возможно, больше. Возможно​ догадываюсь​ ЛЮБОЙ части того​ ячейка В1. Макрос​ êâ. 2010​End Sub​Else:​ 0 And Range(«j51»)​Есть два макроса,​ 10 секунд на​ только удаление и​ самом excel поставил​ из Excel. Заметил,​ следующем: при появлении​

​ принудительное закрытие книги?​​ макросов по времени​ цитировании.​ кто-то напишет я​The_Prist​

​ что справа? :)​​ работает, но если​MsgBox «Ââåäèòå êîððåêòíîå​Sub Metka8k()​

​GoTo Metka18​​ = 0 Then​ условно макрос1 и​ любом листе где​ новое создание листа.​ самый низкий​ что если запускать​ данных в столбце​вопрос: можно ли​ ….​Казанский​ так понимаю напрашивающийся​: т.е. читать все​
​set x=sheets(…) -​ лист с таким​ çíà÷åíèå îïëàòû ïî​Metka8k: ‘Åñëè íå​End If​Metka8k_1​ макрос2.Макрос1 проверяет значения​ я нахожусь.​
​Спасибо!​Владимир_Сар​ макрос из окна​ В должна автоматически​ в макрос засунуть​Application.OnTime TimeValue(«08:00:00»), «Макрос_1″​

​: Mirage74, WaitMessage:​​ ответ ?​ ответы Вы не​ да, конечно.​ именем уже существует,​ áàíêó 2-é êâ.​ ââåäåíà äàòà îïëàòû​Metka19: ‘ Ïðîâåðêà​

​ElseIf Range(«k51») >​
​ в ячейках и​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Worksheets(«Графики»).Range(«A2»).FormulaR1C1 = «Работает»​
​AndreTM​

​: перезапусти ексель, а​​ VBA редактора, то​ вставляться формула в​

​ какую-то инструкцию, которая​​Application.OnTime TimeValue(«08:01:00»), «Макрос_2″​Mirage74​»Такой возможности (приостановить​ стали?​но sheets(…) и​ выбивает ошибку. Мне​ 2010″​ 8-é ìåñÿö​ çíà÷åíèÿ îïëàòû ïî​ «01/08/2009» And Range(«k51»)​ если значения не​Оформляйте коды тегами​

​: 1) С​​ еще может перегрузи​ выполнение макроса после​ столбец А. Но,​ будет заставлять макрос​

​Application.OnTime TimeValue(«08:02:00»), «Макрос_3″​​: Спасибо ! Но​
​ работу макроса, чтобы​Mirage74​ вернет объект -​
​ надо чтоб при​Range(«y51»).Select​

​MsgBox «Ââåäèòå êîððåêòíóþ​ áàíêó 2-é êâ.​

​ < «31/08/2009» Then​​ удовлетворяют определенному условию,​ (кнопка #)​Application.OnTime​ комп, может какие​ открытия файла продолжается.​ так как пользователь​ реагировать на контрол​Application.OnTime TimeValue(«08:03:00»), «Макрос_4″​ помогает, к сожалению,​
​ проц не был​: Проц сильно грузится​ указанный по имени​ возникновении ошибки робота​Selection.ClearContents​

​ äàòó ïëàòåæà 8-é​​ 2010​
​ElseIf Range(«k51») =​
​ выдает сообщение с​
​Vladimir2803​
​не все так​
​ то остаточные глюки​
​Может кто сталкивался​
​ продолжает работать с​
​ брейк? или как​
​Chae​
​ незначительно. При работе​
​ загружен, на некоторое​
​ думаю из-за постоянного​

​ или индексу элемент​

​ макроса останавливалась, и​

​UserForm1.Show​​ ìåñÿö»​If Range(«y51») =​ «01/08/2009» Or Range(«k51»)​
​ просьбой заменить значения​: Возникла проблема подскажите​

​ однозначно. Чтобы иметь​​Serge_PS​ с такой проблемой?​ листом макрос должен​

​ keit предупредить подобные​: Понятно, а макрос​

​ моего макроса 4-ядерный​ время) не существует,​
​ открытия-закрытия файлов. Но​ коллекции.​ всплывало сообщение «Лист​
​End Sub​Range(«k51»).Select​
​ «» Then​
​ = «31/08/2009» Then​ в ячейках, если​
​ как в макросе​
​ возможность включать-выключать процедуру​
​: не помогло​Пользуюсь Excel 2007​
​ позволять вносить изменения​
​ подвисания?​ Workbook_Activate остановить можно?​
​ процессор загружен таким​
​ либо мне об​
​ мой вопрос не​это понятно. вопросов​
​ с таким именем​Sub Metka20z()​Selection.ClearContents​
​Metka19y​Else:​ же условия соблюдены,​

​ команду:​​ по таймеру -​вот это загадка…​Владимир_Сар​
​ в лист, а​спасибо​Юрий М​ образом: 1, 3​ этом неизвестно. «​ в том, почему​ нет.​
​ существует».​
​Metka20z: ‘ Åñëè​
​UserForm1.Show​
​ElseIf Range(«y51») >​
​End If​
​ то вызывается макрос2,​
​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ надо писать некую​Кстати, есть интересная​: В 2003 Екселе​ как раз это​
​Hugo121​
​: Не представляю, как​ и 4 ядра​
​Вот и все.​ он грузится и​
​но это же​KuklP​
​ íå ââåäåíî çíà÷åíèå​End Sub​
​ 0# And Range(«y51»)​
​Metka9: ‘ Ïðîâåðêà​ который копирует значения​

planetaexcel.ru

Как прервать работу зацикленного макроса, если CTRL/Break не «того»?

​Worksheets(«Графики»).Range(«A2»).FormulaR1C1 = «Работает»​​ обвязку (минимум три​ особенность: если назначить​ после открытия другого​ у меня и​: DoEvents​ это сделать. Может​ где-то между 45-55%,​The_Prist​ нагревается.​
​ не означает, что​: Да нет, лучше​ â ÿ÷åéêó íà÷èñëåíèå​
​Sub Metka9l()​ < 1000000000000# Then​ çíà÷åíèÿ îïëàòû ïî​ из данных ячеек,​Выполнить только один​ процедуры), что-то типа:​ макросу кнопку, то​ файла нужно активировать​
​ не получается и​

​Это вообще полезно​​ быть Вы хотите​
​ а 2-е ядро​: Еще раз: не​
​Sanja​ «…» — тоже​
​ перед копированием проверить,​ ïî áàíêó 2-é​Metka9l: ‘ Åñëè​ElseIf Range(«y51») =​ áàíêó 9-é ìåñÿö​ в определенную строку.​ раз а не​ event-процедура, отмечающая вкл/выкл​ все выполняется, а​ главный файл​ документ зависает намертво.​ в длинных циклах.​ кнопкой «Стоп», после​ на 80-90%. Когда​ путайте проги, намеренно​: Ну как знаете​ должен быть объект?​ нет ли такого​ êâ. 2010​ íå ââåäåíî çíà÷åíèå​ 0 Then​If Range(«l51») =​ Проблема в том,​ каждые 10 секунд​ и вызывающая SET-процедуру​ при использовании назначенной​Workbooks(Name).Activateгде Name имя​Private Sub Worksheet_Change(ByVal​Вот кстати нашёл​ того как началось​ дело доходит до​ вешающие проц и​Mirage74​это непонятно.​ листа. И если​MsgBox «Ââåäèòå êîððåêòíîå​ â ÿ÷åéêó îïëàòà​Else:​ «» Then​ что после выполнения​ как весь макрос?​ ; SET-процедура, задающая​ комбинации кнопок -​ главного файла в​ Target As Range)​

​ в закромах:​​ выполнение макросов, перечисленных​ цикла для паузы​

​ макросы, которые это​​: Смысл в том,​Дмитрий, Сергей, большое​ есть — не​ çíà÷åíèå íà÷èñëåíèÿ ïî​ ïî áàíêó 9-é​End If​

​Metka9l​​ всех действий,в макросе1​Vladimir2803​ параметры в зависимости​ нет. Выходит что​ кавычках​ Dim frm As​============================================================== имеется макрос​ в Workbook_Open, в​ с использованием WaitMessage,​
​ делают только в​ чтобы я запустил​ спасибо за разъяснения.​ копировать.​ áàíêó 2-é êâ.​ ìåñÿö​Metka20: ‘ Ïðîâåðêà​ElseIf Range(«l51») >​ и макросе2,запускается опять​: Не знаю корректно​ от состояния вкл/выкл,​ дело не в​Serge_PS​ Long, lLastRowF As​

​ (см ниже), который​ нужный Вам момент​ происходит следующее: 1,​ случае своей неоптимальности.​ макрос, и уехал​
​у меня вопросов​DimaLulchuk​ 2010″​MsgBox «Ââåäèòå êîððåêòíîå​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​ 0# And Range(«l51»)​ макрос1 с новой​ или нет сделал​ устанавливающая основную WORK-процедуру​ том, активен или​: попробовал, не получается​ Long lLastRowF =​ нормально работает, но​ времени приостановить выполнение​ 3 и 4​ЦитатаMirage74 написал: Возможно​ по делам. А​ больше нет. буду​
​: Sub Макрос2()​

CyberForum.ru

Как остановить выполнение макроса

​Range(«z51»).Select​​ çíà÷åíèå îïëàòû ïî​ áàíêó 2-é êâ.​ < 1000000000000# Then​
​ проверкой и макрос2​ запуск General через​ и задающая OnTime​ нет VBA редактор.​
​мой макрос находится​ Cells(Rows.Count, 2).End(xlUp).Row For​ остановить работу макроса​ этого списка? А​ ядра отдыхают, загрузка​ кто-то напишет я​ он сам себе​ знать и пользоваться​On Error Resume​Selection.ClearContents​

​ áàíêó 9-é ìåñÿö»​​ 2010​ElseIf Range(«l51») =​ с очередной ставкой.​

​ другой макрос​​ (причем с использованием​аналитика​ в личной книге​

​ frm = 2​​ получается только кнопкой​

planetaexcel.ru

Остановка макроса при выполнении условия

​ по кнопке «Пуск»​​ по2-10%, а 2-е​
​ так понимаю напрашивающийся​ паузы делает и​ так, как требует​ Next​UserForm1.Show​Else: Range(«l51»).Select​If Range(«z51″) =​ 0 Then​ Как остановить повторное​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​ Shedule) ; рабочая​: попробуй поиграться с​ макросов, получается что​ To lLastRowF If​ Reset в редакторе​ продолжить?​ ядро продолжает впахивать​
​ ответ ?Будете читать​ дальше работает ))​ Excel.​Set wsSh =​End Sub​Selection.ClearContents​ «» Then​Metka9l​ выполнение макросов????​Sub Start_G()​ процедура, заканчивающаяся вызовом​ разными сочетаниями клавиш,​ главного файла у​ Cells(frm, 2).Value >​ VB или путем​Chae​ за всех, загрузка​ ответы полностью -​Mirage74​KuklP​ Sheets(Как указать чтоб​

​Sub Metka21aa()​​UserForm1.Show​Metka20z​End If​
​Guest​Worksheets(«Графики»).Range(«A2»).FormulaR1C1 = «Работает»​ SET-процедуры).​ но если честно,​

​ меня как такового​​ 0 Then Cells(frm,​ закрытия файла. Подскажите​: Да именно это​ на 90-100%. В​ получите ответ.​: Кнопка цитирования не​: ikki, можно проверить,​ имя листа сверялось​

​Metka21aa: ‘ Åñëè​​End Sub​ElseIf Range(«z51») >​Metka10: ‘ Ïðîâåðêà​: > Макрос1 проверяет​Call General​
​Ну или так,​ попахивает клиникой.​ нет​ 1).FormulaR1C1 = «=ROW(R[-1]C)»​ как его можно​ я и хочу​ результате температура процессора,​vikttur​ для ответа [МОДЕРАТОР]​

​ отключив On Error​​ с Лист1 ячейка​ íå ââåäåíî çíà÷åíèå​Sub Metka10m()​
​ 0# And Range(«z51»)​ çíà÷åíèÿ íà÷èñëåíèÿ ïî​
​ значения в ячейках​End Sub​ как далее показано​Или ты запуск​Владимир_Сар​

​ End If Next​​ выключить? Const ИмяФайла7​​ сделать, но не​​ которую я наблюдал​: Взаимно.​Вопрос был есть​ Resume Next. Получим​ В1?)​
​ â ÿ÷åéêó îïëàòà​Metka10m: ‘ Åñëè​ < 1000000000000# Then​ áàíêó 9-é ìåñÿö​Этот макрос случайно​_Boroda_​ у​ производишь при пустой​
​: Я работаю в​
​ frm If Cells(frm,​ = «C:Alex.txt» Const​
​ знаю как.​ во время работы​Предложили:​ ли такая функция/метод​ неверный тип данных.​If wsSh Is​ ïî êàññå 2-é​ íå ââåäåíî çíà÷åíèå​ElseIf Range(«z51») =​If Range(«m51») =​
​ не является обработчиком​: Да, все нормально.​_Boroda_​ среде и скрытом​ 2003 и я​ 1) > 0​ ИмяФайла8 = «C:Alex1.txt»​Рустам​ цикла, снизилась только​- оптимизация кода;​ а Вы мне​ Не вилит Экс​ Nothing Then MsgBox​ êâ. 2010​

​ â ÿ÷åéêó íà÷èñëåíèå​​ 0 Then​

​ «» Then​​ событий листа?​В итоге у​(старт-стоп-работа)…​
​ Personal-e, обработчик ошибок​ не сталкивался с​ And Cells(frm, 2)​ Public РазмерФайла7 As​

​: Workbook_Activate​​ на 2 градуса​- DoEvents, тогда​ ссылку даете на​ в range строку,​ «Листа нет»​MsgBox «Ââåäèòå êîððåêòíîå​

CyberForum.ru

Останавливается выполнение макроса

​ ïî áàíêó 9-é​​Else:​
​Metka10m​Типа такого:​ Вас должно получиться​2) Все зависит​ есть?​ 2007. Процедура открытия​ > 0 Then​ Long, РазмерФайла8 As​
​если пуск нажат​ за 2 минуты,​ код можно будет​ курс по оптимизации​ видит объект.​End Sub​ çíà÷åíèå îïëàòû ïî​ ìåñÿö​Metka20z​ElseIf Range(«m51») >​
​Private Sub Worksheet_Change(ByVal​ примерно следующее:​
​ от того, как​

​Может какая-нибудь критич.​​ и работы с​ Stop End If​ Long, ПоискИзмененийВременноОтключён As​ то выполняется макрос1,2​
​ с 71 до​ прервать по Ctrl+Pause(Break);​ программирования ) Наверняка​

​Mirage74​​ikki​
​ êàññå 2-é êâ.​MsgBox «Ââåäèòå êîððåêòíîå​End If​ 0# And Range(«m51″)​ Target As Range)​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Start_G()​

​ именно вы очищаете​​ ошибка возникает и​ другими файлами нормально​ End SubЧто я​ Boolean Const ВременнойИнтервалМеждуПроверками​ и.т.д.,​ 69. Возможно я​- КАК ПОЛУЧИТЬ​ кстати полезная, как​: Здравствуйте.​

​: Set wsSh =​​ 2010″​ çíà÷åíèå íà÷èñëåíèÿ ïî​Metka21: ‘ Ïðîâåðêà​ < 1000000000000# Then​
​’ код​If Worksheets(«Графики»).Range(«A2») =​ лист. Если отдельной​ он, как тебе​ работает 2003, а​ неправильно делаю или​ = 2 Public​если нет, то​ неправильно использую эту​ ДАННЫЕ ИЗ ЗАКРЫТОЙ​

​ мне показалась на​​У меня такая​ Sheets(Sheets(«Лист1»).[B1])​Range(«aa51»).Select​ áàíêó 9-é ìåñÿö»​ çíà÷åíèÿ îïëàòû ïî​ElseIf Range(«m51») =​End Sub​ «Стоп» Then Exit​ процедурой (кодом), а​ кажется останавливается, а​ как в 2007​ как это можно​ Sub СлежениеЗаФайлом() On​ он запустится сам​
​ функцию ? У​ КНИГИ?​ первый взгляд, обязательно​ проблема: я запуская​KuklP​Selection.ClearContents​Range(«m51»).Select​ êàññå 2-é êâ.​ 0 Then​Выложите код обоих​ Sub​
​ не вручную -​ на самом деле​ извини незнаю.​ сделать другим путем.​ Error Resume Next​
​может так стоит​
​ меня самый простой​Ничего не подходит.​
​ изучу, спасибо​
​ в Excel макрос,​
​: Function WorksheetExist(wsname As​
​End Sub​

​Selection.ClearContents​​ 2010​Else:​ макросов.​Worksheets(«Графики»).Range(«A2») = «Работает»​ то имеет смысл​ он «вхолостую» доходит​

​ironegg​​Vlad999​ Do While True​ написать?​ цикл:​ Ответ:​vikttur​ он выполняется долго​

​ String) As Boolean​​Макрос2​
​UserForm1.Show​If Range(«aa51») =​Metka10m​Посмотрим, что можно​
​General​ переменную​ до End Sub​: а как насчет​
​: а заранее написать​
​ ‘ бесконечный цикл​Юрий М​
​newMinute = Minute(Now())​
​Цитата…не из-за тормознутого​
​: Вы в полуторку​​ и мой кулер​
​’Возвращает ИСТИНА, если​Sub vstavka()​End Sub​

​ «» Then​​End If​ сделать.​End Sub​ПоследняяСтрока​Serge_PS​ получить его имя​
​ формулу на листе​
​ If Not ПоискИзмененийВременноОтключён​: Ну что же​ If newMinute <​
​ макроса, а из-за​ грузите 5 тонн​ не справляется с​ лист существует​

​Dim a As​​Sub Metka11n()​Metka21aa​

​Metka11: ‘ Ïðîâåðêà​​Volhv​Sub Stop_G()​сделать глобальной (а​
​: Похоже разобрался​ во время выполнения​ не вариант?​ Then If ПоискИзмененийВременноОтключён​ Вы… Посмотрите сколько​
​ 58 Then While​
​ аппаратного обеспеченияЗакрывайте другие​ и спрашиваете, почему​ охлаждением. В результате​

​Dim x As​​ Integer​Metka11n: ‘ Åñëè​ElseIf Range(«aa51») >​ çíà÷åíèÿ îïëàòû ïî​

​: Макрос1​​Worksheets(«Графики»).Range(«A2») = «Стоп»​
​ не вычисляемой) и​
​Для запуска макроса​ макроса? чтото вроде​зачем цикл если​ Then Exit Sub​ времени потрачено, чтобы​ newMinute + 2​ приложения, берите веер​ она не едет…​ процессор перегревается и​ Worksheet​

​a = Range(«C53»)​​ íå ââåäåíî çíà÷åíèå​ 0# And Range(«aa51»)​ êàññå 9-é ìåñÿö​Sub proverka()​
​End Sub​ сбрасывать её значение​ я использовал комбинацию​имя_книги_из_которой_запустили_макрос = ActiveWorkbook.Nameправда​ как я понял​
​ НовыйРазмерФайла7 = CreateObject(«scripting.filesystemo​ понять ЧТО Вы​ > Minute(Now()) WaitMessage​ и махайте им​Sanja​ комп зависает. Мне​On Error Resume​

​Range(«A51:AD51»).Select​​ â ÿ÷åéêó îïëàòà​
​ < 1000000000000# Then​If Range(«n51») =​Metka0: ‘ Ïðîâåðêà​Sub General()​
​ при очистке листа.​ клавишь Ctrl+Shift+…, причем​ я не знаю​ пользователь вручную меняет​ bject»).GetFile(ИмяФайла7).Size If НовыйРазмерФайла7​
​ хотите. Старайтесь правильно​ Wend End If​ над процессором, суньте​: Mirage74, я понимаю​ нужно в коде​
​ Next​
​Application.CutCopyMode = False​ ïî êàññå 9-é​

​ElseIf Range(«aa51») =​​ «» Then​ ïðàâèëüíîñòè ñòàòüè áþäæåòà​If Worksheets(«Графики»).Range(«A2») =​ С другой стороны,​

​ с разными буквами​​ как оно будет​ одну ячейку?​ > РазмерФайла7 Then​ формулировать вопросы. Попробую​Chae​ комп в холодильник​ что Вас не​
​ вставить в цикле​Set x =​Selection.Copy​ ìåñÿö​ 0 Then​Metka11n​If Range(«c53») >​

​ «Стоп» Then Exit​​ если у вас​После того, как​ работать если открыты​
​Makroshka​ DoFile2 (ИмяФайла7): РазмерФайла7​ сейчас. А может,​: Здравствуйте!​Ну, действительно -​ переубедить, но все-же…​ оператор (команду ?),​ Worksheets(wsname)​ActiveSheet.Cells(a, 1).Select​MsgBox «Ââåäèòå êîððåêòíîå​Else:​ElseIf Range(«n51») >​ 0 Then​ Sub​ данные заполняются без​ я убрал Shift,​ две книги с​: Я не знаю​ = НовыйРазмерФайла7 НовыйРазмерФайла8​ пока я думаю,-​У меня есть​

​ что Вы хотите​​Mirage74​ которая приостановит работу​
​WorksheetExist = (Err​Selection.Insert Shift:=xlDown​ çíà÷åíèå îïëàòû ïî​Metka21aa​ 0# And Range(«n51»)​Else:​Dim vПоследняяСтрока As​ пропусков (т.е., например,​
​ то есть перешел​ одинаковыми именами… экспериментируй.​ как настроить так,​ = CreateObject(«scripting.filesystemo bject»).GetFile(ИмяФайла8).Size​ кто-нибудь ещё подключится…​ файл excel, при​

CyberForum.ru

Остановка повторения макроса (Макросы/Sub)

​ от форума по​​: Ну я вот​
​ макроса на 2​
​ = 0)​
​End Sub​ êàññå 9-é ìåñÿö"​
​End If​ < 1000000000000# Then​
​Metka0c​ Long​
​ первый столбец ведь​ на комбинацию Ctrl+...​
​ можно придумать другие​ чтобы эта формула​
​ If НовыйРазмерФайла8 >​А Вы пока​
​ открытии которого, каждую​

​ Excel?​
​ иногда поражаюсь таким​ минуты и затем​End Function​Volhv​
​Range(«n51»).Select​vstavka​ElseIf Range(«n51») =​End If​With Worksheets(«x;y»)​ всегда содержит время)​ все заработало.​ способы идентификации. например​ автоматически протягивалась при​ РазмерФайла8 Then DoFile1​ почитайте тему чуть​ минуту происходят определенные​Mirage74​ «ответчикам» на форумах.​
​ продолжит выполнение дальше.​

​DimaLulchuk​​: Таблица представляет собой​​Selection.ClearContents​​End Sub​ 0 Then​Metka1: ‘ Ïðîâåðêà​vПоследняяСтрока = .Range(«A»​ — то конец​Я предпологаю что​ путь и имя​ появлении значения в​ (ИмяФайла8): РазмерФайла8 =​ ниже. «Курсор» называется.​ действия в файле​: Еще раз: если​ Был задан конкретный​ На компе работает​: Что-то ничего не​ бюджет предприятия,и часть​UserForm1.Show​Sub Metka0c()​
​Else:​ çíà÷åíèÿ îïëàòû ïî​ & Rows.Count).End(xlUp).Row +​​ данных можно искать​​ при определенном стечении​
​ файла…​ соседней ячейке, вот​ НовыйРазмерФайла8 End If​ Это я к​ путем запуска макросов.​ бы комп вешался​ вопрос: Существует ли​ только это приложение.​​ получается​​ статей заполняются сотрудниками,​End Sub​MsgBox «Óêàçàíà íå​Metka11n​ áàíêó 7-é ìåñÿö​ 1​ не через .UsedRange​ обстоятельств, комбинация Ctrl+Shift​Serge_PS​ и реализовала как​ t = Timer:​ вопросу формулировок…​ Фрагмент программного кода​ из-за неоптимального макроса,​ такой-то метод. Подразумеваются​

​ Метод ‘Application.Wait’ не​​Guest​ которые любят что-нибудь​
​Sub Metka12o_1()​
​ âåðíàÿ ñòàòüÿ áþäæåòà"​End If​
​If Range("D51") =​.Cells(vПоследняяСтрока, 1) =​ (или .SpecialCells), а​
​ что-то включала или​: Делал и это,​ умела через макрос.​
​ While t +​Рустам​
​ приведен ниже.​ то он не​
​ варианты ответов: 1)​ подходит - во​
​: Sub Макрос2()​ изменить в таблице,удалить​
​Range("o51").Select​Range("c52").Select​
​Metka12: ' Ïðîâåðêà​

​ «» Then​ Format(Now, «hh:mm:ss»)​ с помощью .CurrentRegion.​ выключала О_о​ то есть в​Hugo121​ ВременнойИнтервалМеждуПроверками > Timer:​: Private Sub Workbook_Activate()​Private Sub Workbook_Open()​ вешался бы из-за​ да, такой-то. 2)​ время этой паузы​On Error Resume​

​ строки, отредактировать служебную​​Selection.ClearContents​Selection.ClearContents​ äàòû îïëàòû 9-é​Metka1a​.Cells(vПоследняяСтрока, 2) =​Gustav​хм.. очень странно​
​ начале выполнения программы​: 1. Там в​ DoEvents: Wend Loop​If CommandButton1_Click Then​.​ других программ, сильно​ не существует. А​

​ процессор не охлаждается​​ Next​ информацию, чтобы это​End Sub​

​UserForm1.Show​​ ìåñÿö​ElseIf Range(«d51») >​ Worksheets(«Расчеты»).Range(«C3»)​
​: Например, можно как-то​Всем спасибо за​ записывал в память​
​ коде есть переменная​ End Sub Я​Application.OnTime TimeValue(«08:00:00»), «Макрос_1″​.​
​ грузящих проц (перекодировка​
​ получаешь ответ в​
​ (проверено), а значит​
​Set wsSh =​
​ предотвратить, пришлось установить​

​Sub Metka12o()​
​End Sub​
​If Range(«l51») =​ 0# And Range(«D51»)​
​.Cells(vПоследняяСтрока, 3) =​ так:​ помощь!!!​
​ имя книги, которую​ target, и она​ же вам уже​
​Application.OnTime TimeValue(«08:01:00»), «Макрос_2″​Application.OnTime TimeValue(«08:00:00»), «Макрос_1″​
​ видео, некоторые флэш-игры).​ стиле: ‘ты все​
​ почему-то не разгружается​ Sheets(Как указать чтоб​
​ защиту на книгу,​Metka12o: ‘Åñëè íå​
​Sub Metka1a()​ 0 And Range(«n51»)​
​ < 1000000000000# Then​

​ Worksheets(«Расчеты»).Range(«C5»)​​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub General()​ironegg​ редактирует макрос, потом​ там не зря​ писал, как это​Application.OnTime TimeValue(«08:02:00»), «Макрос_3″​Application.OnTime TimeValue(«08:01:00»), «Макрос_2″​ А он вешается.​ неправильно делаешь и​
​ во время паузы,​
​ имя листа бралось​ а данные в​

​ ââåäåíà äàòà îïëàòû​​Metka1a: ‘ Åñëè​ = 0 Then​ElseIf Range(«d51») =​
​End With​
​Dim vПоследняяСтрока As​

​: да. клавиша Shift​ этот макрос открывает​ — используйте.​ сделать: Код: Sub​

​Application.OnTime TimeValue(«08:03:00»), «Макрос_4″​​Application.OnTime TimeValue(«08:02:00»), «Макрос_3″​ И эти проги​ делай по-другому’​ вызванной ‘Application.Wait’.​
​ из Лист1 ячейка​
​ нее вносятся через​
​ 9-é ìåñÿö​
​ íå ââåäåíî çíà÷åíèå​
​Metka12o_1​

​ 0 Then​​Application.OnTime Now +​
​ Long​ это способ обойти​ другой файл и​
​2. Зачем гнать​
​ НазначьтеЭтотМакросНаКнопкуОстановки() ПоискИзмененийВременноОтключён =​Else:​Application.OnTime TimeValue("08:03:00"), "Макрос_4"​
​ не вешают НАМЕРЕННО​
​The_Prist​
​Mirage74​
​ В1?)​
​ вызов формы.После заполнения​
​MsgBox "Ââåäèòå êîððåêòíóþ​
​ â ÿ÷åéêó îïëàòà​
​ElseIf Range("o51") >​Else:​ TimeValue("00:00:10"), "General"​
​If Worksheets("Лист3").Range("A1").Value =​ автозапуск макросов в​
​ на этом все​
​ по всему столбцу,​ True End Sub​Application.OnTime TimeValue("08:00:00"), "Макрос_1"​
​.​ комп. На других​
​: изучайте OnTime. Но​: Приходится разбивать главный​
​If wsSh Is​ формы вызывается проверка​
​ äàòó ïëàòåæà 9-é​
​ ïî áàíêó 7-é​ "01/09/2009" And Range("o51")​
​Metka1a​

excelworld.ru

​End Sub​

You can interrupt a macro in Excel at any time by pressing Esc or Ctrl + Break.

Place a command button on your worksheet and add the following code lines:

Dim x As Long
x = 5

Do While x > 2
    x = x + 1
Loop

1. Click the command button on the sheet. This macro never stops because the part after ‘Do While’ will always be true (x will always be higher than 2).

2. To halt this infinite loop, press Esc or Ctrl + Break. The following dialog box will appear:

Code Interrupted Dialog Box

3. Click End to end the macro, click Debug to take a look at the macro in the Visual Basic Editor.

4. Add the following code line at the start of your code if you don’t want users of your program to be able to interrupt your macro (not recommended).

Application.EnableCancelKey = xlDisabled

5. Although Excel VBA resets the EnableCancelKey property automatically to xlInterrupt at the end of your macro, it’s good practice (when using the previous code line) to end your macro with the following code line:

Application.EnableCancelKey = xlInterrupt

Note: if Excel freezes and you cannot interrupt your macro anymore, press Ctrl + Alt + Delete and close Excel.

  • Remove From My Forums
  • Question

  • Hi guys,

    What should I do in order to halt the execution of my macro using code?

    If the macro is running (without any error) and meets the condition «x», I want it to STOP running as it.

    I can not use «Exit».

    Any good ideas?

    Thanks in advance,

    Aldo. 

Answers

  • It would just be End.

    But using End in this way seems completely wrong. Terminating the run in your function is the wrong place.
    You should pass back information via the function(s) and deal with termination in a more appropriate location.

4 / 4 / 1

Регистрация: 17.09.2015

Сообщений: 64

1

05.11.2015, 13:29. Показов 40035. Ответов 5


Студворк — интернет-сервис помощи студентам

Привет. Макрос (видимо) зациклился и колбасит уже час вместо положеных 10 минут. Ни на что не реагирует, собственно. Хотя параллельно могу открывать другие книги ексель для работы.
Я так понимаю, что теперь тольуко принудительное закрытие книги?

вопрос: можно ли в макрос засунуть какую-то инструкцию, которая будет заставлять макрос реагировать на контрол брейк? или как keit предупредить подобные подвисания?

спасибо



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

05.11.2015, 13:29

Ответы с готовыми решениями:

Как прервать работу макроса, если он не откликается на Ctrl+Break?
здравствуйте иногда после нажатия Run когда очень срочно нужно прервать работу макроса я делаю -…

Как сделать так, чтобы работу макроса нельзя было прервать с помощью Ctrl+Break и других комбинаций?
Добрый день,
известно, что работу мкроса можно остановить, например, ctrl+break/pause. Возможно и…

При Ctrl+Break возникает ошибка «Code execution has been interrupted»
Sub Sam8()
K = 1
Do While Mid(Cells(5, 5), K, 1) &lt;&gt; &quot; &quot;
K = K + 1
Loop
Range(&quot;A8&quot;).Value =…

Как в Word 2010 аккорду «Ctrl ё» присвоить действие кнопки «формат по абзацу»
Скажите, плиз… как в Word 2010 аккорду &quot;Ctrl+ё&quot; присвоить действие кнопки &quot;Формат по абзацу&quot;….

5

Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

05.11.2015, 14:01

2

Цитата
Сообщение от AAAAAAAmidi
Посмотреть сообщение

можно ли в макрос засунуть какую-то инструкцию, которая будет заставлять макрос реагировать

DoEvents
Это вообще полезно в длинных циклах.

Добавлено через 6 минут
Вот кстати нашёл в закромах:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
==============================================================
имеется макрос (см ниже), который нормально работает, но остановить работу макроса получается только кнопкой Reset в редакторе VB или путем закрытия файла. Подскажите как его можно выключить?
 
Const ИмяФайла7 = "C:Alex.txt"
Const ИмяФайла8 = "C:Alex1.txt" 
 
Public РазмерФайла7 As Long, РазмерФайла8 As Long, ПоискИзмененийВременноОтключён As Boolean
Const ВременнойИнтервалМеждуПроверками = 2
 
Public Sub СлежениеЗаФайлом()
On Error Resume Next
 
 
Do While True ' бесконечный цикл
If Not ПоискИзмененийВременноОтключён Then
If ПоискИзмененийВременноОтключён Then Exit Sub
 
НовыйРазмерФайла7 = CreateObject("scripting.filesystemo bject").GetFile(ИмяФайла7).Size
If НовыйРазмерФайла7 > РазмерФайла7 Then DoFile2 (ИмяФайла7): РазмерФайла7 = НовыйРазмерФайла7
 
НовыйРазмерФайла8 = CreateObject("scripting.filesystemo bject").GetFile(ИмяФайла8).Size
If НовыйРазмерФайла8 > РазмерФайла8 Then DoFile1 (ИмяФайла8): РазмерФайла8 = НовыйРазмерФайла8
 
 
End If
t = Timer: While t + ВременнойИнтервалМеждуПроверками > Timer: DoEvents: Wend 
Loop
 
End Sub 
 
Я же вам уже писал, как это сделать:
 
 
Код:
 
Sub НазначьтеЭтотМакросНаКнопкуОстановки()
    ПоискИзмененийВременноОтключён = True
End Sub
 
==============================================================



1



Ушел с CyberForum совсем!

873 / 182 / 25

Регистрация: 04.05.2011

Сообщений: 1,020

Записей в блоге: 110

05.11.2015, 14:04

3

спасибо !

Цитата
Сообщение от Hugo121
Посмотреть сообщение

«scripting.filesystemo bject»

очепятка !



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

05.11.2015, 14:14

4

Спасибо что заметили — может кто с правами исправит в теме, я в закромах уже подправил



0



132 / 15 / 2

Регистрация: 27.11.2013

Сообщений: 509

06.11.2015, 12:16

5

У меня тоже макрос не прерывается стандартными средствами — Breake, Сtrl. Тока если вырубить файл через диспетчер. А на самодельную кнопку команду break насадить никак нельзя?
У меня кстати и некоторые функциональные клавиши не работают. Например, F4 — отн/ абс ссылки в формулах. Это чето программное, я подозреваю. Lenovo, епта, чо с них взять. Под функциональные клавиши можно код VBA написать? Подскажите хотя бы тему, где рыть



0



Аксима

6076 / 1320 / 195

Регистрация: 12.12.2012

Сообщений: 1,023

06.11.2015, 15:18

6

Цитата
Сообщение от shavka
Посмотреть сообщение

Под функциональные клавиши можно код VBA написать?

Насчет всех кнопок не знаю, но вот эмулятор кнопки F4, кажется, получилось сделать:

Visual Basic
1
2
3
4
5
6
7
8
Sub ChangeAbsoluteRelative()
    Dim i As Long, cellFormula As String, convFormula As String, cell As Range
    Set cell = ActiveCell: cellFormula = cell.Formula
    For i = 1 To 4
        convFormula = Application.ConvertFormula(cellFormula, Application.ReferenceStyle, Application.ReferenceStyle, i)
        If cellFormula = convFormula Then cell.Formula = Application.ConvertFormula(cellFormula, Application.ReferenceStyle, Application.ReferenceStyle, i Mod 4 + 1)
    Next i
End Sub

Пробуйте.

С уважением,

Аксима



1



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

06.11.2015, 15:18

Помогаю со студенческими работами здесь

Если навел мышкой на 1 то вывести «единица», если 2 то «Двойка», если на 3 то «тройка» и тд., и это все в одной функции
Ребят, выручайте.

&lt;div id=&quot;1&quot; onMouseOver=&quot;inf()&quot; onMouseOut=&quot;noinf()&quot;&gt;1&lt;/div&gt;
&lt;br&gt; …

Как запретить использовать клавиши масштабирования и «Ctrl + Колесу прокрутки» и обновления страницы «F5» в WebBrowser — е ?
Как запретить использовать клавиши масштабирования и &quot;Ctrl + Колесу прокрутки&quot; и обновления…

Как написать регулярное выражение для выдергивания английских букв и символов: «+», «,», «:», «-«, » «, «!», «?» и «.»
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и…

Операции со строками.Заменить в строке букву «а» на «с», если она стоит на чётном месте,и на «у» если на нечётном
Дана строка.Заменить в строке букву &quot;а&quot; на &quot;с&quot;, если она стоит на чётном месте,и на &quot;у&quot; если на…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

Понравилась статья? Поделить с друзьями:
  • Vba excel последняя строка умной таблицы
  • Vba excel последняя строка на листе
  • Vba excel последняя строка диапазона
  • Vba excel последняя заполненная ячейка в строке
  • Vba excel последняя заполненная строка в таблице