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

Вход

Регистрация

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

 

= Мир MS Excel/Импорт динамических данных - Мир MS Excel

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

Excel 2013
В ячейку импортируются данные из программы с определенной частотой. Есть макрос, который записывает данные в столбец, но его приходится запускать вручную. Необходимо, чтоб старые значения сохранялись автоматически, формируя столбец (Макрос должен запускаться автоматически при импорте нового числа. Или другое решение).
К сообщению приложен файл: __.xlsm (15.5 Kb)


Сообщение отредактировал Alex12345 - Вторник, 14.04.2015, 17:39
 
Ответить
СообщениеВ ячейку импортируются данные из программы с определенной частотой. Есть макрос, который записывает данные в столбец, но его приходится запускать вручную. Необходимо, чтоб старые значения сохранялись автоматически, формируя столбец (Макрос должен запускаться автоматически при импорте нового числа. Или другое решение).

Автор - Alex12345
Дата добавления - 14.04.2015 в 17:35
nilem Дата: Вторник, 14.04.2015, 18:02 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Alex12345, привет
попробуйте, например, так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("E6,G6")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Rows(8).Insert
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
Application.EnableEvents = True
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеAlex12345, привет
попробуйте, например, так
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Range("E6,G6")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Rows(8).Insert
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
Application.EnableEvents = True
End Sub
[/vba]

Автор - nilem
Дата добавления - 14.04.2015 в 18:02
KSV Дата: Вторник, 14.04.2015, 18:42 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
nilem, вместо этого:
[vba]
Код
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
[/vba]
можно сразу так:
[vba]
Код
Range("E8:G8") = Range("E6:G6").Value
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеnilem, вместо этого:
[vba]
Код
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
[/vba]
можно сразу так:
[vba]
Код
Range("E8:G8") = Range("E6:G6").Value
[/vba]

Автор - KSV
Дата добавления - 14.04.2015 в 18:42
nilem Дата: Вторник, 14.04.2015, 19:12 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
KSV, ну ведь с Array интереснее :)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеKSV, ну ведь с Array интереснее :)

Автор - nilem
Дата добавления - 14.04.2015 в 19:12
KSV Дата: Вторник, 14.04.2015, 20:49 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
а так понятнее и быстрее :)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеа так понятнее и быстрее :)

Автор - KSV
Дата добавления - 14.04.2015 в 20:49
Alex12345 Дата: Вторник, 14.04.2015, 21:25 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Что то не выходит... Что я не так сделал?
К сообщению приложен файл: 5231820.xlsm (19.2 Kb)
 
Ответить
СообщениеЧто то не выходит... Что я не так сделал?

Автор - Alex12345
Дата добавления - 14.04.2015 в 21:25
Manyasha Дата: Вторник, 14.04.2015, 21:32 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Alex12345, здравствуйте. А данные в ячейки E6 и G6 импортируются одновременно? Попробуйте убрать строчку[vba]
Код
If Target.Count > 1 Then Exit Sub
[/vba]


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAlex12345, здравствуйте. А данные в ячейки E6 и G6 импортируются одновременно? Попробуйте убрать строчку[vba]
Код
If Target.Count > 1 Then Exit Sub
[/vba]

Автор - Manyasha
Дата добавления - 14.04.2015 в 21:32
Alex12345 Дата: Вторник, 14.04.2015, 21:36 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте. Данные импортируются одновременно. Строчку убрал. Не помогло.
Когда ставлю курсор в ячейку Е6 и нажимаю Enter, все срабатывает. А автоматически, само не работает.


Сообщение отредактировал Alex12345 - Вторник, 14.04.2015, 21:39
 
Ответить
СообщениеЗдравствуйте. Данные импортируются одновременно. Строчку убрал. Не помогло.
Когда ставлю курсор в ячейку Е6 и нажимаю Enter, все срабатывает. А автоматически, само не работает.

Автор - Alex12345
Дата добавления - 14.04.2015 в 21:36
KSV Дата: Вторник, 14.04.2015, 21:50 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
скорее всего, у вас отключены события.
выполните принудительно вот эту строчку:
[vba]
Код
Application.EnableEvents = True
[/vba]
К сообщению приложен файл: 8702434.xlsm (16.7 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениескорее всего, у вас отключены события.
выполните принудительно вот эту строчку:
[vba]
Код
Application.EnableEvents = True
[/vba]

Автор - KSV
Дата добавления - 14.04.2015 в 21:50
Alex12345 Дата: Вторник, 14.04.2015, 22:08 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
выполните принудительно вот эту строчку:
Application.EnableEvents = True


Извините, не знаю как принудительно выполнить строчку.. Если не сложно, - напишите подробнее.
 
Ответить
Сообщение
выполните принудительно вот эту строчку:
Application.EnableEvents = True


Извините, не знаю как принудительно выполнить строчку.. Если не сложно, - напишите подробнее.

Автор - Alex12345
Дата добавления - 14.04.2015 в 22:08
KSV Дата: Вторник, 14.04.2015, 22:23 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
не нужно выполнять, у вас причина в другом...
если бы были отключены события у вас бы так не сработало
Когда ставлю курсор в ячейку Е6 и нажимаю Enter, все срабатывает.

нужно посмотреть, как трэйдер обновляет данные в E6 и G6


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 14.04.2015, 22:26
 
Ответить
Сообщениене нужно выполнять, у вас причина в другом...
если бы были отключены события у вас бы так не сработало
Когда ставлю курсор в ячейку Е6 и нажимаю Enter, все срабатывает.

нужно посмотреть, как трэйдер обновляет данные в E6 и G6

Автор - KSV
Дата добавления - 14.04.2015 в 22:23
Alex12345 Дата: Вторник, 14.04.2015, 22:31 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Нужно задать вопрос поставщику данных? Или что то другое?
 
Ответить
СообщениеНужно задать вопрос поставщику данных? Или что то другое?

Автор - Alex12345
Дата добавления - 14.04.2015 в 22:31
KSV Дата: Вторник, 14.04.2015, 22:38 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
нет. возможно, все-таки отключены события...
не знаю как принудительно выполнить строчку.

вставьте в любой модуль вашей книги вот этот код, и запустите его по F5
[vba]
Код
Sub TTT()
     Application.EnableEvents = True
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениенет. возможно, все-таки отключены события...
не знаю как принудительно выполнить строчку.

вставьте в любой модуль вашей книги вот этот код, и запустите его по F5
[vba]
Код
Sub TTT()
     Application.EnableEvents = True
End Sub
[/vba]

Автор - KSV
Дата добавления - 14.04.2015 в 22:38
Alex12345 Дата: Вторник, 14.04.2015, 22:49 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Все сделал. Не помогло.
К сообщению приложен файл: 3658291.xlsm (21.7 Kb)
 
Ответить
СообщениеВсе сделал. Не помогло.

Автор - Alex12345
Дата добавления - 14.04.2015 в 22:49
KSV Дата: Вторник, 14.04.2015, 22:59 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
А вы визуально видите, что данные в ячейках E6 и G6 обновляются?
просто, у меня не установлен трэйдер и я не могу воспроизвести вашу ситуацию у себя...


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 14.04.2015, 23:08
 
Ответить
СообщениеА вы визуально видите, что данные в ячейках E6 и G6 обновляются?
просто, у меня не установлен трэйдер и я не могу воспроизвести вашу ситуацию у себя...

Автор - KSV
Дата добавления - 14.04.2015 в 22:59
Alex12345 Дата: Вторник, 14.04.2015, 23:04 | Сообщение № 16
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Да. Визуально вижу. Числа "прыгают", обновляются постоянно. Раз в 3-4 секунды. Может ли быть такое, что импортируется другой тип данных. НЕ ЧИСЛО. Или... не могу точнее сформулировать. Далек от программирования. (
 
Ответить
СообщениеДа. Визуально вижу. Числа "прыгают", обновляются постоянно. Раз в 3-4 секунды. Может ли быть такое, что импортируется другой тип данных. НЕ ЧИСЛО. Или... не могу точнее сформулировать. Далек от программирования. (

Автор - Alex12345
Дата добавления - 14.04.2015 в 23:04
KSV Дата: Вторник, 14.04.2015, 23:08 | Сообщение № 17
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Может ли быть такое, что импортируется другой тип данных. НЕ ЧИСЛО

тип импортируемых данных непричем.
[p.s.]если хотите, можете запустить TeamViewer, кинуть мне на почту UIN и пароль - я подключусь, посмотрю.
Почта в подписи. (Вы будете видеть на экране все, что я делаю)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Может ли быть такое, что импортируется другой тип данных. НЕ ЧИСЛО

тип импортируемых данных непричем.
[p.s.]если хотите, можете запустить TeamViewer, кинуть мне на почту UIN и пароль - я подключусь, посмотрю.
Почта в подписи. (Вы будете видеть на экране все, что я делаю)

Автор - KSV
Дата добавления - 14.04.2015 в 23:08
nilem Дата: Среда, 15.04.2015, 00:03 | Сообщение № 18
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Alex12345,
наверное, другое событие нужно использовать
на листе в яч. А1, например, напишите формулу
Код
=E6+G6

а в модуль листа вот такой код (другие коды из модуля уберите)
[vba]
Код
Private Sub Worksheet_Calculate()
Rows(8).Insert
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
End Sub
[/vba]
должно получиться (где-то это было, что прием данных по ДДЕ не вызывает событие Worksheet_Change - удивительно)

ну да, лучше все-таки
[vba]
Код
Range("E8:G8").Value = Range("E6:G6").Value
[/vba]
:)


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Среда, 15.04.2015, 00:06
 
Ответить
СообщениеAlex12345,
наверное, другое событие нужно использовать
на листе в яч. А1, например, напишите формулу
Код
=E6+G6

а в модуль листа вот такой код (другие коды из модуля уберите)
[vba]
Код
Private Sub Worksheet_Calculate()
Rows(8).Insert
Range("E8:G8").Value = Array(Range("E6"), "", Range("G6"))
End Sub
[/vba]
должно получиться (где-то это было, что прием данных по ДДЕ не вызывает событие Worksheet_Change - удивительно)

ну да, лучше все-таки
[vba]
Код
Range("E8:G8").Value = Range("E6:G6").Value
[/vba]
:)

Автор - nilem
Дата добавления - 15.04.2015 в 00:03
Hugo Дата: Среда, 15.04.2015, 00:16 | Сообщение № 19
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3254
Репутация: 707 ±
Замечаний: 0% ±

2019
А если на листе будут и другие формулы пересчитываться?
Ещё вариант - завязать на эти ячейки невидимые текстбоксы, и использовать их события.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеА если на листе будут и другие формулы пересчитываться?
Ещё вариант - завязать на эти ячейки невидимые текстбоксы, и использовать их события.

Автор - Hugo
Дата добавления - 15.04.2015 в 00:16
KSV Дата: Среда, 15.04.2015, 00:19 | Сообщение № 20
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
nilem, да, так 100-пудово должно сработать, но так могут быть и "ложные срабатывания"...
а я ему хотел предложить перевесить код на событие FollowHyperlink
[vba]
Код
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
     If Intersect(Target, Range("E6,G6")) Is Nothing Then Exit Sub
     Application.EnableEvents = False
     Rows(8).Insert
     Range("E8:G8") = Range("E6:G6").Value
     Application.EnableEvents = True
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщениеnilem, да, так 100-пудово должно сработать, но так могут быть и "ложные срабатывания"...
а я ему хотел предложить перевесить код на событие FollowHyperlink
[vba]
Код
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
     If Intersect(Target, Range("E6,G6")) Is Nothing Then Exit Sub
     Application.EnableEvents = False
     Rows(8).Insert
     Range("E8:G8") = Range("E6:G6").Value
     Application.EnableEvents = True
End Sub
[/vba]

Автор - KSV
Дата добавления - 15.04.2015 в 00:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Импорт динамических данных (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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