автоматическое нажатие кнопки

  • Автор темы cowboy
  • Дата начала

cowboy

New member
имеется лист..на нем в одном столбце показаны макс цены за период(выставлены вручную)...в другом столбцы реал там идет экспорт из квика( с помощью ВПР находятся нужные данные)..требуется при пробитии бумаги определенного максимума что бы вывалился алерт или отослалось СМС или на почту сообщение пришло..у меня сделана обычная кнопка которая сравнивает эти два значения..Можно в принципе попробовать ее автоматом перезапускать каждые 1 мин..
помогите плиз
 

Massaraksh

New member
В Excel-евском VB есть система обработки событий. В частности, событие изменения значений на листе
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub

Перехватываешь его, анализируешь и делаешь, что нужно.
Всё есть в документации VB Excel.
 

cowboy

New member
В Excel-евском VB есть система обработки событий. В частности, событие изменения значений на листе
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub

Перехватываешь его, анализируешь и делаешь, что нужно.
Всё есть в документации VB Excel.
а можно с примером...я имею ввиду что забивать в
ByVal Target As Range) нужно...а то я так пробовал но ничего не получалось...
 

Massaraksh

New member
Worksheet Object Events

Events on sheets are enabled by default. To view the event procedures for a sheet, right-click the sheet tab and click View Code on the shortcut menu. Select the event name from the Procedure drop-down list box.

Activate
BeforeDoubleClick

BeforeRightClick

Calculate

Change
Deactivate
FollowHyperlink

PivotTableUpdate

SelectionChange



Worksheet-level events occur when a worksheet is activated, the user changes a worksheet cell, or when PivotTable is changes. The following example adjusts the size of columns A through F whenever the worksheet is recalculated.

Private Sub Worksheet_Calculate()
Columns("A:F").AutoFit
End Sub
Some events can be used to substitute an action for the default application behavior, or to make a small change to the default behavior. The following example traps the right-click event and adds a new menu item to the shortcut menu for cells B1:B10.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, _
Cancel As Boolean)
For Each icbc In Application.CommandBars("cell").Controls
If icbc.Tag = "brccm" Then icbc.Delete
Next icbc
If Not Application.Intersect(Target, Range("b1:b10")) _
Is Nothing Then
With Application.CommandBars("cell").Controls _
.Add(Type:=msoControlButton, before:=6, _
temporary:=True)
.Caption = "New Context Menu Item"
.OnAction = "MyMacro"
.Tag = "brccm"
End With
End If
End Sub
 

Massaraksh

New member
Плюс к тому не забыть:

Using Events with Microsoft Excel Objects

You can write event procedures in Microsoft Excel at the worksheet, chart, query table, workbook, or application level. For example, the Activate event occurs at the sheet level, and the SheetActivate event is available at both the workbook and application levels. The SheetActivate event for a workbook occurs when any sheet in the workbook is activated. At the application level, the SheetActivate event occurs when any sheet in any open workbook is activated.

Worksheet, chart sheet, and workbook event procedures are available for any open sheet or workbook. To write event procedures for an embedded chart, QueryTable object, or Application object, you must create a new object using the WithEvents keyword in a class module.

Use the EnableEvents property to enable or disable events. For example, using the Save method to save a workbook causes the BeforeSave event to occur. You can prevent this by setting the EnableEvents property to False before you call the Save method.

Application.EnableEvents = False
ActiveWorkbook.Save
Application.EnableEvents = True
 

Massaraksh

New member
В качестве примера код, записывающий в ячейку B2 адрес изменяемой ячейки:
Код:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address = "$B$2" Then Exit Sub
Sh.Cells(2, 2) = Target.Address
End Sub
P.S. Подставлять ничего никуда не надо. Функция обработки вешается на соответствующее событие Excel.

Чтобы совсем было понятно:

Вход в Excel.
Сервис.
Макрос.
Редактор VB.
В окне Projects - Эта книга - правой мышкой - ViewCode
Выбираем вверху слева WorkBook
Выбираем вверху справа CheetChange
Записываем туда наш код - ВСЁ
 

cowboy

New member
В Excel-евском VB есть система обработки событий. В частности, событие изменения значений на листе
Private Sub Worksheet_Change(ByVal Target As Range)
...
End Sub

Перехватываешь его, анализируешь и делаешь, что нужно.
Всё есть в документации VB Excel.

блин....дома сделал все нормально..пришел на работу..начал делать и гуй..сдесь хелп другой и не получается...Дома писал что то типа TARGET.COLUMN...Может кто поможет??С примером желательно
 

cowboy

New member
делаю во что ..с помощью стандарт функции ВПР нахожу цену инструмента на втором листе....Но когда запускаю процедуру на изменение рабочего листа..

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Theт

MsgBox "thtf"
End If


End Sub

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

mehanizator1

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

cowboy

New member
найми уже программиста.
что это вы так вдруг зло то???неужто твой дродаун тебя так злит?так всех посетителей распугаешь
не зло, вполне по-доброму. в любом случае трейдерский форум не лучшее место, чтобы учиться программировать.
понимаешь...я сам програмист...ТОлко учился исключительно на одельфане...Я и знать не знал как пользоваться ВЛД...но благодаря форумам освоил его где то через месяц.Сам бы хрен его разобрал..к тому же литература на нем исключительно инглиш..(нормальная).Теперь сам помогаю людям на форумах с ним.Тоже самое и с Экселем..Примерно я знаю как работать...а вот подробности очень легко узнать в нете....
Так что буду очень признателен за любую помощь в этом деле..Спасибо
 

cowboy

New member
пробую тупо влоб перезапускать кнопку



Private Sub CommandButton1_Click()
MsgBox "123"
Application.OnTime Now + TimeValue("00:00:5"), "CommandButton1_Click()"
End Sub

выводит ошибку не найден макрос.Где я не прав...спасибо
 

DN

New member
cowboy пускай цикл, чего велосипед изобретаешь..........

то о чем пишет Massaraksh у меня то же не вышло.........было бы гораздо красивей..........
 

cowboy

New member
cowboy пускай цикл, чего велосипед изобретаешь..........

то о чем пишет Massaraksh у меня то же не вышло.........было бы гораздо красивей..........
короче все было гораздо проще

вот функция...
Sub Worksheet_Calculate()
.......
End Sub
с ней все в разы проще..кто нить поможет может с отправкой сообщение на мыло?
 

Massaraksh

New member
делаю во что ..с помощью стандарт функции ВПР нахожу цену инструмента на втором листе....Но когда запускаю процедуру на изменение рабочего листа..

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Theт

MsgBox "thtf"
End If


End Sub

в столбец два выводятся реал тайм котировки..но эта процедура не работает при изменении цен с данном столбце...а если менять ручками то все ок...Кто поможет ???
Попробуй с использованием события Calculate.
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху