Страницы: 1
RSS
запись лога в экселе с всплывающим диалогом при перемещении ячейки (drag&drop) Помогите!!!! Отблагодарю., нужен код vba, или решение с экселем
 
Господа знатоки доброго здоровья!
Выручите если можно вообще такие вещи делать!
Суть есть табличка в общем доступе, используется почти как база данных. ЖД диспетчер делает маневры - перетаскивает согласно расстановки вагоны (это номера в листе рабочее поле) Сверху привязка к конкретному пути.
Нужно:
1. в листе рабочее при переносе данных мышкой из одной ячейки в другую, выдать диалоговое окно с предложением выбрать номер локомотива (лист "настройки")
2. При выборе локомотива из выпадающего списка в диалоговом окне и нажатии кнопки подтверждения (или даблклика) записать в лист "База учета" операцию в таком примерно виде (как в образце). Смену взять из ячейки в листе "настройки", она будет задаваться один раз ручками. дислокацию (откуда-куда) с верхней ячейки.
3. Писать такой лог программа должна с отступом каждый раз вниз (наполняя лист как некий лог-файл) Время-дату брать системное.
4. Если при переносе будет нажата кнопка отмена в всплывающем диалоге, то операцию не записывать или записывать с пустым номером локомотива.
5. при переносе пустых ячеек или замены пустыми ячейками заполненных тоже ничего не писать, равно как и при редактировании ячейки
6. при вводе данных в пустую ячейку желательно (но не обязательно) применять диалог согласно пп. 1-4\ см. выше.
Очень жду ответов.
За красивое решение отблагодарю материально.
 
Цитата
За красивое решение отблагодарю материально.
а если решение не очень красивое будет - бесплатно делать?

Цитата
при переносе данных мышкой из одной ячейки в другую
отловить такой перенос весьма сложно
скорее, даже, невозможно
 
Фаил показать можете?
Если очень захотеть - можно в космос полететь ;)
 
ну рассмотрим все
 
отписал в личку
 
не прикладывался образец
 
http://rghost.ru/private/54247995/f43268636770fa2c51400c4f045efe07  вот видео как работает, работает по двойному клику по ячейке!
Если очень захотеть - можно в космос полететь ;)
 
вот файлик для теста!
Если очень захотеть - можно в космос полететь ;)
 
почти похоже но :
1. Двойной щелчок нужно оставить. В таблице постоянно нужно редактировать соседние поля (их в образце убрал пока) там пишутся комментарии. И самое главное - работа часто ведется не с одной ячейкой, а с несколькими, тут даблклик портит всю масть.
2. Надо чтобы код срабатывал именно после переноса и сам определял координаты (как вариант можно сделать привязку к пути в скрытом где-то справа столбце)
3. Основное требование это удобство - выбор пути из списка тяжелый и неудобный  (их у меня около 100 вариантов) в примере далеко не все. В общем выбор нужен только тепловоза.
Изменено: leg@82 - 17.04.2014 05:23:23
 
как говорил Игорь,
Цитата
Игорь пишет:
отловить такой перенос весьма сложно
скорее, даже, невозможно
с чем я согласен, можно попробовать сделать так: при выделении диапазона, вываливалось бы окно, в котором у нас на выбор 2 кнопочки (копировать/вставить), при нажатии на копировать окно скрывалось и ждало следующего выделенного диапазона, это то куда нужно вставить, после выделения нового диапазона появлялась эта же форма и при нажатии кнопки вставить форма менялась (появлялся бы выбор номера пути) и кнопка ок, но это в теории!
Если очень захотеть - можно в космос полететь ;)
 
http://rghost.ru/private/54288575/a390a850c23c3ad66daddddd0372a4a7   вот такой вот вариантик!
Если очень захотеть - можно в космос полететь ;)
 
Ну вот для теста!
Если очень захотеть - можно в космос полететь ;)
 
Цитата
Игорь пишет:
отловить такой перенос весьма сложно
скорее, даже, невозможно
lexey_fan пишет: с чем я согласен
можно создать скрытый лист, и в него "слепок" делать, сравнивать значения ячеек после изменения со значениями в скрытом листе, после этого все изменения заносить в лог, и обновлять значения в скрытом листе ...
что то типа такого

Код
1
2
3
4
5
6
7
8
9
10
11
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim oCell As Range
For Each oCell In ActiveSheet.UsedRange
If Sheets("sheet2").Range(oCell.Address).Value <> oCell.Value Then
  
'тут прописать дополнение записей в лог об изменениях  
 
    Sheets("sheet2").Range(oCell.Address).Value = oCell.Value
End If
Next
End Sub
 
уже тепло (координаты видит) , но таки нужно чтобы при переносе работало, иначе просто надоест и работать не будет. Еще предусмотреть бы режим включения/отключения (но это я понимаю довольно легко сделать)
 
взял в работу
 
выполнил, отправил на тестирование 19.04, пока тишина
Страницы: 1
Читают тему
Наверх
Loading...