Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2015, 13:05   #1
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию Формула "Равно" в макросе

Всем доброго времени суток!
В теме от Jaroslav мелькнула очень интересная идея, которая сподвигла на написание макроса для составления одного отчета.
Возникла проблема - нужно на одном листе поставить в ячейке ссылку на ячейку на другом листе, проще говоря ячейка В2= А1, через макрорекодер выглядит так
Код:
    Range("D4").Select
    ActiveCell.FormulaR1C1 = "=Sheet1!R[2]C"
Хотелось бы чтобы это выглядело как-то так
Код:
Range("D4").FormulaR1C1 = "=Sheet1!" & Cells(7, 4)
чтобы была возможность сделать ссылку на "плавающую ячейку" - выбранную в зависимости от условия

Нужно поставить не значение из ячейки, а именно ссылку на ячейку
27102014 вне форума Ответить с цитированием
Старый 19.05.2015, 13:42   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
r = 7:  c = 4
Range("D4").FormulaR1C1 = "=Sheet1!R" & r & "C" & c
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2015, 13:53   #3
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Игорь, СПАСИБО ОГРОМНОЕ!!!!
То что нужно!!!!! Надеялся на Вашу помощь - когда-то Вы сказали что предпочитаете стиль ячеек R1C1.
Уточните, пжл, если знаете - вставляемая макросом ссылка абсолютная, в $ $, можно ли прописать в коде чтобы она была относительной????
27102014 вне форума Ответить с цитированием
Старый 19.05.2015, 14:08   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
dim dr as string, dc as string, r as long, c as long, cell as range
r = 7:  c = 4:  set cell = [d4]
dr = "R" & iif (r-cell.row =0, "", "[" & r-cell.row & "]")
dc = "C" & iif(c-cell.column =0, "", "[" & c-cell.column & "]")
cell.FormulaR1C1 = "=Sheet1!" & dr & dc
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2015, 14:30   #5
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Очень сложно понять
Попробовал настроить под свои данные - координаты ячейки вычисляются в цикле - получилась "каша"

Воспользуюсь первоначальной формулой, а потом сделаю замену $ вот так
Код:
Selection.Replace What:="$", Replacement:="", LookAt:=xlPart
Еще раз спасибо!!!!!
27102014 вне форума Ответить с цитированием
Старый 19.05.2015, 14:51   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

устанавливаются значения переменных:
r, c (ряд, колонка) - куда надо сослаться
cell - ячейка, в которую внести формулу
r = 7: c = 4: set cell = [d4]
тремя строками ниже в cell вносится относительная ссылка на ячейку (r,c) листа Sheet1
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 19.05.2015, 15:05   #7
27102014
Форумчанин
 
Регистрация: 27.10.2014
Сообщений: 248
По умолчанию

Вроде понял - уже использовал переменную "с", поэтому изначально не получилось
Код:
r = i + 1: j = h:
Set cell = ActiveCell
dr = "R" & IIf(r - cell.Row = 0, "", "[" & r - cell.Row & "]")
dj = "C" & IIf(j - cell.Column = 0, "", "[" & j - cell.Column & "]")
cell.FormulaR1C1 = "=Sheet1!" & dr & dj
27102014 вне форума Ответить с цитированием
Старый 19.05.2015, 19:58   #8
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Цитата:
Сообщение от 27102014
можно ли прописать в коде чтобы она была относительной????
Код:
Range("D4").Formula = "=Sheet1!" & Cells(7, 4).Address(False, False)
pashulka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
ошибка "1004" в макросе при попытке обратиться к ячейке через метод End Прик Microsoft Office Excel 3 16.02.2013 13:08
если в C# "тождественно равно"? BIGNUB C# (си шарп) 4 18.01.2012 20:00
Загрузка в отдельном потоке TIdHTTP всё равно "замораживает" форму Cold_Night Общие вопросы Delphi 3 07.04.2010 19:35
несколько объектов в макросе "ЗадатьЗначение" vlad_stv Microsoft Office Access 1 03.03.2010 14:32