![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 21.01.2011
Сообщений: 8
|
![]()
Проблема в следующем: данные в ячейках А1,А2 и А3 обновляются каждые 10 мин. Как сделать так чтобы они выводились в соответствующий столбик? Например: "Показания ячейки А1"-1.Через 10 мин в ячейке А1 цифра изменилась на "2" и автоматически записалась под цифрой "1" в столбик "Показания ячейки А1" и т.д.
|
![]() |
![]() |
![]() |
#2 |
Регистрация: 21.01.2011
Сообщений: 8
|
![]()
Огромная просьба: объясните,пожалуйста мне эту процедуру "на пальцах",т.к. таких столбиков планируется гораздо больше и я хочу понять весь механизм действий.Заранее огромное спасибо!!!
P.S. Если такой вопрос уже был - прошу меня извинить и перенаправить по адресу.Я честно пытался найти что-то подобное, но за час поиска ничего не нашёл. P.P.S. Честно говоря в примере прикреплять фактически нечего, но я вижу документ приблизительно таким. |
![]() |
![]() |
![]() |
#3 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
в колонке В я дописал номера колонок, в которые будут переноситься данные из А
там буквально две строчки кода... даже не знаю что обьяснять на пальцах... это решение настраивается (в В пишете куда заносить данные и все). успехов!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 21.01.2011
Сообщений: 8
|
![]()
Спасибо большое, просто у меня это первые шаги.Ещё раз спасибо!
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 21.01.2011
Сообщений: 8
|
![]()
Вы всё сделали просто замечательно, всё работает так как мне хотелось, но пожалуйста, уделите ещё немного времени. Объясните пожалуйста (если не затруднит - пошагово) все Ваши действия. Всё работает просто замечательно, но я очень хочу научиться самостоятельно проделывать то же самое. Заранее огромное спасибо!
|
![]() |
![]() |
![]() |
#6 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Long If Target.Column <> 1 Then Exit Sub If Target.Offset(0, 1) = "" Then MsgBox "Укажите номер столбца...", vbCritical, "Не понятно, куда складывать данные!" Exit Sub End If c = Target.Offset(0, 1) Cells(Cells(Rows.Count, c).End(xlUp).Row + 1, c) = Target End Sub выбросим фрагмент, который отлавливает ошибки и сообщает об этом пользователю. остается: Private Sub Worksheet_Change(ByVal Target As Range) Dim c As Long If Target.Column <> 1 Then Exit Sub c = Target.Offset(0, 1) Cells(Cells(Rows.Count, c).End(xlUp).Row + 1, c) = Target End Sub макрос стал в двое короче, соответсвенно теперь вдвое меньше обьяснять. макрос этот срабатывает каждый раз, когда происходит изменение значения в какой-либо ячейке рабочего листа. в качестве аргумента он получает диапазон (Target As Range), в котором произошло это самое изменение. в общем случае это может быть действительно диапазон ячеек или отдельная ячейка. Какие свойства и методы есть у обьекта Range Вы можете посмотреть в справке, предупреждаю - их довольно много. If Target.Column <> 1 Then Exit Sub свойство Column обьекта Target содержит номер колонки, в которой этот самый Target находится. итак, если колонка, в которой произошло изменение на равна 1 (т.е. изменения произошли не в первой колонке), прекращаем выполнение этой процедуры. c = Target.Offset(0, 1) метод Offset обьекта Target позволяет сослаться на другую ячейку, надо только указать сколько строк отсчитаь от текущей строки и сколько колонок от текущей. Target.Offset(0, 1) ссылается на ячейку находящуюся правее Target. а вся это конструкция звписывает значение из ячейки правее изменившейся в переменную с. Cells(Cells(Rows.Count, c).End(xlUp).Row + 1, c) = Target собственно эта строка решает вашу задачу: переносит значение из колонки А, в соответствующую колонку в первую пустаю ячейку. конструкция Cells(10, 5) = 100 запишет 100 в ячейку находящуюся в 10-м ряду, в 5-й колонке. ряд и колонку можно задать не числами, а переменными например Cells(R, C) = 100. надо только переменным R и C присвоить нужные значения. колонку, куда записывать мы уже определили строкой раньше: c = Target.Offset(0, 1). в связи с тем что Rows.Count - количество строк в листе, то Cells(Rows.Count, c) - это самая последняя ячейка в колонке с. напоминаю с мы только что определили. метод End ячейки Cells(Rows.Count, c) с параметром xlUp укажет первую непустую ячейку, если перебирать ячейки вверх от ячейки из которой этот метод вызван. т.е. Cells(Cells(Rows.Count, c).End(xlUp) - это первая непустая ячейка сверху от Cells(Rows.Count, c) соответственно Cells(Cells(Rows.Count, c).End(xlUp).Row - это последний ряд (строка), в которой что-то есть, а Cells(Cells(Rows.Count, c).End(xlUp).Row+1 - это следующий ряд (строка) - т.е. в предыдущем ряду в колонке с было значение, а в этом нет, эта ячейка пустая, в нее-то мы и запишем изменившееся значение из Target. поставлю точку на этом повествовании: значение из Target мы записываем в ячейку, которая находится в колоке, значение которой находится в ячейке, которая находится правее Target и в строчке, которая содержит первую пустую ячейку, начиная сверху в колонке, значение которой находится в ячейке, которая находится правее Target. получилось почти как у Маршака: Вот два петуха, Которые будят того пастуха, Который бранится с коровницей строгою, Которая доит корову безрогую, Лягнувшую старого пса без хвоста, Который за шиворот треплет кота, Который пугает и ловит синицу, Которая часто ворует пшеницу, Которая в темном чулане хранится В доме, Который построил Джек! очередной раз спасибо всем, кто дочитал до сюда. отдельное спасибо Самуилу Яковлевичу, который вдохновил меня на этот пост.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 21.01.2011
Сообщений: 8
|
![]()
IgorGO ,спасибо большое за Ваше внимание и отзывчивость. К сожалению пока для моего восприятия это трудная информация, но я немедленно приступаю к её усваению(или усваиванию
![]() |
![]() |
![]() |
![]() |
#8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
значит все было не напрасно!
не смотря на кажущуюся минимальность кода, этот пример действительно не очень подходящий для того, чтобы делать первые шаги... начните с "Hello World!" - стандартная первая программа для любого языка. понимаете, если разбирая выложенный пример, вдаваться во все нюансы - рассказ может затянутся на 10 страиц, если рассказать коротко, будет вопиюще не точно и останется полно вопросов. Кстати, в детальном рассказе, возможно вопросов не останется, но новых появится в 10 раз больше... какой-то замкнутый круг. в чем я уверен на 100% - так это в том, что программирование - это ремесло, такое же как гончарство или кузнечное дело, ему может научиться каждый, надо время, желание и не помешает знающий человек, способный в нужный момент направить в нужную сторону.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не обновляются данные в WebBrowser | Shouldercannon | Работа с сетью в Delphi | 6 | 19.03.2010 19:27 |
Необходимо связать данные в ячейках | Janyska | Microsoft Office Excel | 4 | 28.09.2009 16:51 |
Не обновляются наборы данных | 111111 | Помощь студентам | 5 | 23.06.2009 23:33 |
Файлы по http не обновляются | salgir | JavaScript, Ajax | 1 | 18.10.2008 17:55 |
Не обновляются связи!!! | Bezdar | Microsoft Office Excel | 0 | 06.08.2008 15:15 |