Имеются сложности с написанием макроса, в котором есть формула, внутри которой находятся числитель и знаменатель, являющиеся выделениями.
Поясняю. На листе необходимо выводить в A2 формулу СУММ(C2:C3)/B2, но числитель и знаменатель должны браться из выделения. Написал три макроса:
1. Выделение числителя:
Код
Sub ВыделениеЧислителя()
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Offset(1, 2).Select
Selection.Resize(Selection.Rows.Count - 1, Selection.Columns.Count).Select
End Sub
2. Выделение знаменателя:
Код
Sub ВыделениеЗнаменателя()
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Offset(1, 1).Select
Selection.Resize(Selection.Rows.Count - 1, Selection.Columns.Count).Select
End Sub
3. Вставка формулы в A2:
Код
Sub ВставкаФормулы()
Dim FormulaResult As Worksheet
Set FormulaResult = Excel.ActiveSheet
FormulaResult.Range("A2").Value = "=Sum(C2:C3)/B2"
End Sub
В итоге макрос должен выглядеть так:
Код
Sub ВставкаФормулыВыделения()
Dim FormulaResult As Worksheet
Set FormulaResult = Excel.ActiveSheet
FormulaResult.Range("A2").Value = "Выделение числителя / Выделение знаменателя"
End Sub
Подскажите, пожалуйста, как это сделать? В VBA новичок, но думаю, что для числителя и знаменателя нужно вводить какие-то переменные или что-то еще.
Добрый день. Из примера непонятно что за "выделение" такое, откуда надо брать значения числителя и знаменателя? В примере ни куска исходных данных нет, да и макросов самих тоже нет. Вы не описывайте путь решения (а то вдруг он неправильный, а?), опишите исходные условия и нужный результат простыми русскими буквами, например: Есть список чисел в столбце А. Пользователь должен выделить то-то и сделать се-то и эти числа надо записать сюда/туда/вон там в таком/сяком/разэтоком виде. Как-то попроще.
Пытливый, Казалось бы, всё расписал подробно, приложил пример, приложил макросы... Постараюсь объяснить еще раз. На листе в A2 нужно макросом выводить результат деления диапазонов "Сумма (C2:C3)" на B2:B3. Но! Эти диапазоны заданы в макросе не явно (то бишь, не прописаны их буквенно-цифровые "позывные"), а заданы селектами. Пользователь ничего не должен делать сам, вместо него это делает макрос, который запустил пользователь.
Как написать такой макрос, который выводит в А2 интересующую формулу?
Код
Sub ВставкаФормулыВыделения()
Dim FormulaResult As Worksheet
Set FormulaResult = Excel.ActiveSheet
FormulaResult.Range("A2").Value = "Выделение числителя / Выделение знаменателя"
End Sub
Где: Выделение числителя - селект, заданный одноименным макросом (или куском кода в общем макросе) Выделение знаменателя - селект, заданный одноименным макросом (или куском кода в общем макросе)
В примере диапазоны это всего лишь пример. Они могут быть в разных частях таблицы. То есть, повторюсь, они в формуле прописываются не явно, а заданы селектами.
Это числители со знаменателями всегда как в файле примере, т.е. напротив ячейки, где будут проводиться вычисления? И вообще Вы пошли окружным путем... Формулы, выделения...
Anchoret написал: Это числители со знаменателями всегда как в файле примере, т.е. напротив ячейки, где будут проводиться вычисления?
Да. Всегда напротив. Только в примере диапазоны C2:C3 и B2:B3, а могут быть другие. Но в итоге всегда напротив.
Суть такова, что сначала нужно взять (сохранить куда-то в буфере, например) значение/сумму ячейки/диапазона, а потом из "буфера" вытащить и вставить в формулу.
Формулу-то написать проще простого, но диапазоны всегда разные, явно их не задашь в этом случае.
Вам тогда надо все объединять в один макрос, где от выделенной ячейки вы определяете адрес ячеек числителя, знаменателя, а потом используете эти адреса в формуле, которую вставляете в заданную ячейку. Адрес диапазона можно определить, например, так:
Код
[a1].Offset(1, 2).Resize(2, 1).Address
получите значение типа "текст" потом это значение использовать в формуле, например: