Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Как обеспечить возможность изменения фигуры только в ширину.
 
Понятно, спасибо.
Тогда пойдем по пути возврата измененной высоты фигуры.
Как обеспечить возможность изменения фигуры только в ширину.
 
Да - это я знаю как сделать.
Если не будет решения с маркерами - придется идти по такому пути.
Изменено: kalakom - 10.02.2019 14:04:17
Как обеспечить возможность изменения фигуры только в ширину.
 
Не подходит - много действий.
Думаю, что самое гармоничное - это захват пользователем маркера изменения ширины и его перемещение.
Хотелось бы вот этого добиться.
Как обеспечить возможность изменения фигуры только в ширину.
 
Понял, поясню.

Когда пользователь выделяет фигуру, то на выделенной фигуре не должно быть маркеров изменения размера фигуры по высоте - это как раз и изображено на 2-ой фигуре. Она отличается от первой тем, что на ней нет маркеров изменения высоты фигуры.
Мне и необходимо получить результат, который отображен на фигуре 2.

Спасибо.
Изменено: kalakom - 10.02.2019 13:49:44
Как обеспечить возможность изменения фигуры только в ширину.
 
Добрый день.

Необходимо дать пользователю возможность изменения фигуры только по ширине. Т.е. сделать из фигуры 1 фигуру 2 при выделении.
Как это можно сделать?

Дубль.

Спасибо.
Изменено: kalakom - 10.02.2019 13:43:20
Нанесение фигуры на диаграмму происходит не правильно - со смещением
 
Добрый день.

Хочу дать пользователям выделения диапазонов на диаграмме.
Для этого решил использовать нанесения на диаграмму фигуры прямоугольника.
Положение прямоугольника определяю по координатам мыши, переданным Excel в обработчик MouseUp диаграммы.
Прямоугольник наносится на PlotArea.

Запустить пример можно из процедуры df() модуля Module1.
Для нанесения прямоугольника необходимо нажать комбинацию <ЛВК+Ctrl> в области построения диаграммы (PlotArea)
ЛВК - левая кнопка мыши.

Проблема в том, что начало прямоугольника наносится со смещением относительно координаты Х переданный Excel в обработчик MouseUp диаграммы.
Ожидалось, что начало прямоугольника будет точно совпадать с координатой Х. Откуда берется смещение?

Спасибо!
Как вставить кнопку на диаграмму
 
Всем добрый день.

Как можно вставить кнопку на диаграмму?
Хотелось бы с помощью этой кнопки, например, менять масштаб графиков.

Кросс
Изменено: kalakom - 31.01.2019 18:54:29
Использование функций VBA в качестве пользовательской формулы на листе при ее протягивании
 
Да, я тоже это решение обдумал - взял на заметку.
Спасибо.
Использование функций VBA в качестве пользовательской формулы на листе при ее протягивании
 
Да, с Application.Caller все заработало как и планировалось. Я понимаю, что Application.Caller является ссылкой на объект. Просто когда посмотрел в отладчике что он содержит, то увидел пустую строку и подумал что это NULL на объект в нотации VBA и не стал такую ссылку использовать для вызова метода Row. Видно в отладчике VBA не посмотреть действительный адрес объекта.

Большое спасибо, тему считаю закрытой, проблему решенной.
Использование функций VBA в качестве пользовательской формулы на листе при ее протягивании
 
Понял, причина вот в чем:
Заполнение столбца "Номер" идет из файла с помощью VBA. Перед вызовом функции VBA заполнения из файла этого столбца пользователь должен и может определить место где этот столбец в Excel будет находиться. Место он определяет с помощью установки именованной ячейки "Номер" что и является для функции заполнения "стартовой ячейкой".
Далее начинает работать функция, которая должна увеличить каждое значение столбца "Номер" на 10. При этом эта функция знает только расположение именованной ячейки "Номер". Заполнение столбца "Функции" идет параллельно столбцу "Номер". Для того, чтобы эта функция поняла, какое значение из столбца "Номер" надо увеличивать, она определяет номер строки в которой надо вставить формулу и отнимает от этого номера строки номер строки именованной ячейки "Номер" вот так: ActiveCell.Row - Ячейка.Row. Далее это значение используется как смещение относительно расположения именованной ячейки "Номер" и по этому смещению берется значение для увеличения на 10: Ячейка.Offset(ActiveCell.Row - Ячейка.Row, 0).Value + 10. Вот почему используется смещение.
Использование функций VBA в качестве пользовательской формулы на листе при ее протягивании
 
Дмитрий(The_Prist) Щербаков, про Application.Caller не знал - отличная вещь. Но в мое случае он возвращает пустую строку.
При этом функция вызывается столько раз, сколько выделенных ячеек образовалось при протяжке.
Изменено: kalakom - 22.01.2019 14:12:36
Использование функций VBA в качестве пользовательской формулы на листе при ее протягивании
 
 Все добрый день ...

Необходимо увеличить значение каждой ячейки в столбце "Номер" на 10, с использованием функции VBA как пользовательской формулы на листе. Результат должен быть записан в соответствующей ячейке (т.е. напротив ячейке исходного значения) в столбце "Формула".
Т.е. должно быть вот так:

Написал функцию VBА, увеличения значения ячеек столбца "Номер" на 10 и помещения результата вычисления в столбец "Формула":
При этом ячейка H3 является именованной с тем же именем что и находящейся в ней текст, т.е. "Номер".
На вход функции и поступает имя этой ячейки. Функция возвращает увеличенное значение номер.
Код
Function РасчетФормулы(Ячейка As Range) As Integer
  РасчетФормулы = Ячейка.Offset(ActiveCell.Row - Ячейка.Row, 0).Value + 10
End Function
Данная функция "ручками" вписывается в каждую ячейку столбца "Формула" и мы получаем тот результат, который ожидаем.
Но если взять и протянуть формулу из ячейки I8, до конца столбца, то получим следующий результат:

Проанализировав ситуация, пришел к выводу, что в этом случае активная ячейка не меняется и остается по адресу I8, который и используется для расчета формулы. Таким образом результат формулы один и тот же: 15. Если бы можно было в формуле использовать не активную ячейку, а текущую ячейку, в которую Excel вставляет на данный момент формулу при протяжке, то, возможно проблема бы решилась. Прошу подсказать как мне правильно написать формулу.
Изменено: kalakom - 22.01.2019 14:35:34
Страницы: 1
Наверх