Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Накапливание данных / 25 сообщений из 32, страница 1 из 2
11.06.2010, 07:49
    #36681914
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Из сторонней программы в Excel передаются числовые значения с интервалом 5 сек. в ячейку A1 т.е значение в ячейке каждый раз обновляется.
Помогите написать макрос, чтобы Excel заносил каждое новое число в ячейку ниже (происходило бы накапливание данных - каждое новое число заносилось в свою ячейку тем самым заполнялся столбец).

Спасибо!
...
Рейтинг: 0 / 0
11.06.2010, 08:23
    #36681934
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Можно попробовать такой вариант.
К сожалению не записал автора рекомендаций, но, неизвестный, респект тебе:)
----------
отлавливание внешнего изменения ячейки

1. Откройте Excel
2. Кликните правой клавишей мыши по свободному пространству на линии меню Excel
3. Удостоверьтесь, что линия Control Toolbox отмечена птичкой
4. На панели Control Toolbox кликните по иконочке с молоточком и гаечным ключом
5. Найдите в появившемся списке RefEdit.ctrl
6. Кликните по этому имени
7. Положите его курсором на лист Excela (проведите по листу курсором с нажатой клавишей мыши)
8. Кликните правой клавишей по положенному на лист контролю
9. Найдите в меню линию Properties
10. Кликните по ней
11. Найдите в списке свойств свойство LinkedCell
12. Напечатайте во второй колоночке A1
13. Закройте панель свойств, кликнув на крестик в правом верхнем углу панели.
14. На панели Control Toolbox кликните по иконочке с угольником, линейкой и карандашом
15. Нажмите Alt-F11
16. В кодовом окне для того листа, на который вы посадили RefEdit, откройте левый верхний комбобокс
17. Выберете RefEdit1
18. В кодовом окне для того листа, на который вы посадили RefEdit, откройте правый верхний комбобокс
18. Выберете Change
19. Внутри процедуры события RefEdit1_Change напишите:

Range("B1").Value = Range("A1").Value

20. Вернитесь в лист Excel
21. При необходимости, на панели Control Toolbox кликните по иконочке с угольником, линейкой и карандашом еще раз, чтобы выйти из режима дизайна, если вы еще в нем.
22. Напечатайте что-нибудь в клеточку A1
23. Наблюдайте за содержимым B1
---------
...
Рейтинг: 0 / 0
11.06.2010, 14:47
    #36683005
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
sergeyvg, спасибо большое! очень доходчиво написано.
но обновление идет только в одной ячейке, а как сделать чтобы каждое новое значение записывалось в новую ячейку т.е. чтобы формировался столбец из значений.
...
Рейтинг: 0 / 0
11.06.2010, 15:33
    #36683160
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count >  1  Then Exit Sub
Dim iLastRow As Long
Application.EnableEvents = False
If Target = [a1] Then
iLastRow = Cells(Rows.Count,  1 ).End(xlUp).Row +  1 
[a1].Copy Cells(iLastRow,  1 )
End If
Application.EnableEvents = True
End Sub
...
Рейтинг: 0 / 0
11.06.2010, 15:42
    #36683189
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Ну и это перерабатываем так:

Код: plaintext
1.
2.
3.
4.
5.
Private Sub RefEdit1_Change()
Dim iLastRow As Long
iLastRow = Cells(Rows.Count,  1 ).End(xlUp).Row +  1 
[a1].Copy Cells(iLastRow,  1 )
End Sub
...
Рейтинг: 0 / 0
11.06.2010, 15:51
    #36683220
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Ну и пример наконец :)
...
Рейтинг: 0 / 0
11.06.2010, 16:07
    #36683262
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121, ну просто супер!
Всё отлично работает.

Спасибо Вам большое за помощь!
...
Рейтинг: 0 / 0
11.06.2010, 16:19
    #36683300
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
в ручном режиме работает отлично, но с OPCtoDDE при получении нового значения обновляются все ячейки и в них появляются одни и те же числа.
...
Рейтинг: 0 / 0
11.06.2010, 16:36
    #36683345
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82, не верю :)
А так?:
Код: plaintext
1.
2.
3.
Private Sub RefEdit1_Change()
Cells(Cells(Rows.Count,  1 ).End(xlUp).Row +  1 ,  1 ) = CDbl(RefEdit1)
End Sub
...
Рейтинг: 0 / 0
11.06.2010, 16:56
    #36683399
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121,
попробывал: http://imagepost.ru/?v=150/Clipboard01.gif
Модератор:
Рекламные ссылки будут удаляться.
...
Рейтинг: 0 / 0
11.06.2010, 17:05
    #36683416
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82, а какой лист в этот момент активен? Если другой, код надо чуть подправить.
...
Рейтинг: 0 / 0
11.06.2010, 17:09
    #36683432
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Может чуть перегнул, но для надёжности:

Код: plaintext
1.
2.
3.
Private Sub RefEdit1_Change()
ThisWorkbook.Sheets( 1 ).Cells(ThisWorkbook.Sheets( 1 ).Cells(ThisWorkbook.Sheets( 1 ).Rows.Count,  1 ).End(xlUp).Row +  1 ,  1 ) = CDbl(ThisWorkbook.Sheets( 1 ).RefEdit1)
End Sub
...
Рейтинг: 0 / 0
11.06.2010, 17:11
    #36683442
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121, активен лист Sheet1

модератору: рекламные ссылки у меня уже прописаны в сообщении, я их не вставлял.
Каждый раз приходится удалять в предыдущем сообщении забыл удалить.
...
Рейтинг: 0 / 0
11.06.2010, 17:12
    #36683444
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82,
а это вирус...!!!
...
Рейтинг: 0 / 0
11.06.2010, 17:14
    #36683450
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121Алекс82,
а это вирус...!!!
+1
...
Рейтинг: 0 / 0
11.06.2010, 17:15
    #36683452
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121Может чуть перегнул, но для надёжности:

Код: plaintext
1.
2.
3.
Private Sub RefEdit1_Change()
ThisWorkbook.Sheets( 1 ).Cells(ThisWorkbook.Sheets( 1 ).Cells(ThisWorkbook.Sheets( 1 ).Rows.Count,  1 ).End(xlUp).Row +  1 ,  1 ) = CDbl(ThisWorkbook.Sheets( 1 ).RefEdit1)
End Sub


не, та же ошибка появляется.
...
Рейтинг: 0 / 0
11.06.2010, 17:17
    #36683459
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82,
я бы у Вас файл попросил, но теперь уж лучше сперва полечитесь ... :)
...
Рейтинг: 0 / 0
11.06.2010, 17:25
    #36683475
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121Алекс82,
я бы у Вас файл попросил, но теперь уж лучше сперва полечитесь ... :)

ясно...nod32 всё же...
пока я проверяю систему может подскажите другой путь (не используя стороннюю программу OPCtoDDE тем более платную) для извлечения данных с opc-сервера.
...
Рейтинг: 0 / 0
11.06.2010, 17:31
    #36683486
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82, Я пас насчёт замены. Так может после лечения и это заработает.
...
Рейтинг: 0 / 0
11.06.2010, 17:58
    #36683536
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121,

похоже проблема в том что у меня в ячейке A1 стоит формула которая связывает OPC-сервер
=OPCtoDDE|OPCDataStore.TOPCElemerServer.2!'COM1.ИРТ 5920(30)[1].Канал 1'

и при остановке сервера получается картина, т.е. копируются постоянно не числа, а эта формула поэтому во всех ячейках одни данные. может как то преобразовывать в числа.
...
Рейтинг: 0 / 0
11.06.2010, 18:01
    #36683543
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
извините, опять проглядел ссылки

к предыдущему сообщению, такая картина получается при остановке OPC-сервера http://imagepost.ru/?v=150/pBlUvnAE7r_Clipboard01.gif
...
Рейтинг: 0 / 0
11.06.2010, 18:13
    #36683563
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82,
я думал, у вас значение ячейке присваивается макросом.
В этом случае, может завести глобальную переменную, и отслеживать её изменение, и писать в столбец только изменённые данные, если конечно так можно по задаче, т.е. если повторов быть не должно.
...
Рейтинг: 0 / 0
11.06.2010, 19:28
    #36683644
Алекс82
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Hugo121,
помогите пожалуйста добавить вторую ячейку B1 в макрос (те же функции как и у A1), чтобы можно было бы снимать данные со второго прибора в одном листе Excel.
...
Рейтинг: 0 / 0
11.06.2010, 22:10
    #36683814
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Алекс82, так заработало? А то зачем аналогично делать вторую ячейку, если эта не работает?
...
Рейтинг: 0 / 0
12.06.2010, 00:24
    #36683907
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накапливание данных
Сделал, раз нет ответа :)
Добавил ещё один RefEdit и код к нему. В принципе, всё аналогично, только 1 заменил на 2.
И ещё добавил фильтр на цифровые значения, т.е. на текст реагировать не будет, так что может этой поправки и хватит.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Накапливание данных / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]