Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Относительная ссылка на ячейку - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Относительная ссылка на ячейку (Макросы/Sub)
Относительная ссылка на ячейку
Xpert Дата: Понедельник, 16.04.2018, 09:01 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Подскажите, пожалуйста, можно ли в VBA реализовать относительные ссылки на ячейку?
В файле примера, макрос вставляет формулу в ячейку D14.
Но, если добавить, или сократить количество строк в таблице(лист 1(2)), формула всё-равно продолжает вставляться в D14.
А можно ли как-то сделать, чтобы адрес ячейки которую вставляется формула, смещался вместе с диапазоном?
К сообщению приложен файл: 0888251.xlsm(18.6 Kb)
 
Ответить
СообщениеЗдравствуйте.
Подскажите, пожалуйста, можно ли в VBA реализовать относительные ссылки на ячейку?
В файле примера, макрос вставляет формулу в ячейку D14.
Но, если добавить, или сократить количество строк в таблице(лист 1(2)), формула всё-равно продолжает вставляться в D14.
А можно ли как-то сделать, чтобы адрес ячейки которую вставляется формула, смещался вместе с диапазоном?

Автор - Xpert
Дата добавления - 16.04.2018 в 09:01
sboy Дата: Понедельник, 16.04.2018, 09:13 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1696
Репутация: 482 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
как вариант, искать последнюю строку и записывать формулу.
[vba]
Код
Sub Макрос3()
'Cells(14, 4).ClearContents
Cells(Rows.Count, 4).End(xlUp).FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]
К сообщению приложен файл: 9628349.xlsm(18.2 Kb)
 
Ответить
СообщениеДобрый день.
как вариант, искать последнюю строку и записывать формулу.
[vba]
Код
Sub Макрос3()
'Cells(14, 4).ClearContents
Cells(Rows.Count, 4).End(xlUp).FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]

Автор - sboy
Дата добавления - 16.04.2018 в 09:13
Xpert Дата: Понедельник, 16.04.2018, 09:54 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
как вариант, искать последнюю строку и записывать формулу.

sboy, спасибо.
Но в реальной таблице, ниже D14 тоже будут строки. Как быть тогда?
 
Ответить
Сообщение
как вариант, искать последнюю строку и записывать формулу.

sboy, спасибо.
Но в реальной таблице, ниже D14 тоже будут строки. Как быть тогда?

Автор - Xpert
Дата добавления - 16.04.2018 в 09:54
sboy Дата: Понедельник, 16.04.2018, 10:00 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1696
Репутация: 482 ±
Замечаний: 0% ±

Excel 2010
Как быть тогда?

да по разному можно,я же не знаю как у Вас там все в реальном файле организовано.
еще вариант сверху вниз
[vba]
Код
Sub Макрос3()
Cells(3, 4).End(xlDown).FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]
 
Ответить
Сообщение
Как быть тогда?

да по разному можно,я же не знаю как у Вас там все в реальном файле организовано.
еще вариант сверху вниз
[vba]
Код
Sub Макрос3()
Cells(3, 4).End(xlDown).FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]

Автор - sboy
Дата добавления - 16.04.2018 в 10:00
Karataev Дата: Понедельник, 16.04.2018, 10:22 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1208
Репутация: 456 ±
Замечаний: 0% ±

Excel
Xpert, в Excel'е есть такое понятие "поиск последней строки". Как раз в Вашем вопросе и нужно сделать поиск последней строки:
[vba]
Код
Sub Макрос3()
    Dim lr As Long
    'поиск последней строки в столбце "D"
    lr = Cells(Rows.Count, "D").End(xlUp).Row + 1
    Cells(lr, "D").FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]


Киви-кошелек: 9166309108
Яндекс-деньги: 410014131888288
 
Ответить
СообщениеXpert, в Excel'е есть такое понятие "поиск последней строки". Как раз в Вашем вопросе и нужно сделать поиск последней строки:
[vba]
Код
Sub Макрос3()
    Dim lr As Long
    'поиск последней строки в столбце "D"
    lr = Cells(Rows.Count, "D").End(xlUp).Row + 1
    Cells(lr, "D").FormulaR1C1 = "=ROUND(R2C4*R1C3,2)"
End Sub
[/vba]

Автор - Karataev
Дата добавления - 16.04.2018 в 10:22
Xpert Дата: Вторник, 17.04.2018, 09:44 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Karataev, sboy, спасибо!
То есть, аналогов экселевским относительным ссылкам, в VBA нет?
 
Ответить
СообщениеKarataev, sboy, спасибо!
То есть, аналогов экселевским относительным ссылкам, в VBA нет?

Автор - Xpert
Дата добавления - 17.04.2018 в 09:44
nilem Дата: Вторник, 17.04.2018, 09:57 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1447
Репутация: 511 ±
Замечаний: 0% ±

Excel 2013
Xpert, присвойте ячейке имя. В коде можно будет ссылаться на эту ячейку не по адресу, а по имени - что-то вроде относительной ссылки.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеXpert, присвойте ячейке имя. В коде можно будет ссылаться на эту ячейку не по адресу, а по имени - что-то вроде относительной ссылки.

Автор - nilem
Дата добавления - 17.04.2018 в 09:57
Xpert Дата: Вторник, 17.04.2018, 13:34 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
nilem, спасибо, отличный вариант!
 
Ответить
Сообщениеnilem, спасибо, отличный вариант!

Автор - Xpert
Дата добавления - 17.04.2018 в 13:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Относительная ссылка на ячейку (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!