Домашняя страница 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
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 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
Группа: Проверенные
Ранг: Старожил
Сообщений: 1944
Репутация: 564 ±
Замечаний: 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
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

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

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

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

Автор - Xpert
Дата добавления - 16.04.2018 в 09:54
sboy Дата: Понедельник, 16.04.2018, 10:00 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 1944
Репутация: 564 ±
Замечаний: 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
Группа: Проверенные
Ранг: Старожил
Сообщений: 1238
Репутация: 472 ±
Замечаний: 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
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

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

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

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


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

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

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

Автор - Xpert
Дата добавления - 17.04.2018 в 13:34
Xpert Дата: Четверг, 26.04.2018, 11:32 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приветствую вас, дамы и господа.
Почему-то не работает именованная ячейка(delvr)...По задумке, при клике на неё, должна появляться форма.
Но на не появляется...Ткните, пожалуйста, где ошибка?
К сообщению приложен файл: 7559032.xlsm(25.7 Kb)
 
Ответить
СообщениеПриветствую вас, дамы и господа.
Почему-то не работает именованная ячейка(delvr)...По задумке, при клике на неё, должна появляться форма.
Но на не появляется...Ткните, пожалуйста, где ошибка?

Автор - Xpert
Дата добавления - 26.04.2018 в 11:32
StoTisteg Дата: Четверг, 26.04.2018, 11:39 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 905
Репутация: 76 ±
Замечаний: 0% ±

Excel 2010
Xpert, во-первых, сейчас придёт модератор и велит создать новую тему. Во-вторых
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target Is Range("delvr") Then Call delivery
End Sub
[/vba]
А разгадка почему не работает, проста — у Вас на листе просто нет ни одного имени. Вообще.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Четверг, 26.04.2018, 13:53
 
Ответить
СообщениеXpert, во-первых, сейчас придёт модератор и велит создать новую тему. Во-вторых
[vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target Is Range("delvr") Then Call delivery
End Sub
[/vba]
А разгадка почему не работает, проста — у Вас на листе просто нет ни одного имени. Вообще.

Автор - StoTisteg
Дата добавления - 26.04.2018 в 11:39
Xpert Дата: Четверг, 26.04.2018, 14:27 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, не понял...в диспетчере имён всё указано же.
"delvr" и прочее...
 
Ответить
СообщениеStoTisteg, не понял...в диспетчере имён всё указано же.
"delvr" и прочее...

Автор - Xpert
Дата добавления - 26.04.2018 в 14:27
StoTisteg Дата: Четверг, 26.04.2018, 16:44 | Сообщение № 12
Группа: Авторы
Ранг: Ветеран
Сообщений: 905
Репутация: 76 ±
Замечаний: 0% ±

Excel 2010
Ну я не знаю. Я в макрос добавляю
[vba]
Код
Dim i As Integer
i=Activesheet.Names.Count
[/vba]и в пошаговом прогоне вижу, что i имеет значение 0.


Проверь всё. ThisWorkbook.Save. On Error Resume Next.
 
Ответить
СообщениеНу я не знаю. Я в макрос добавляю
[vba]
Код
Dim i As Integer
i=Activesheet.Names.Count
[/vba]и в пошаговом прогоне вижу, что i имеет значение 0.

Автор - StoTisteg
Дата добавления - 26.04.2018 в 16:44
StoTisteg Дата: Четверг, 26.04.2018, 16:45 | Сообщение № 13
Группа: Авторы
Ранг: Ветеран
Сообщений: 905
Репутация: 76 ±
Замечаний: 0% ±

Excel 2010
Всё. Увидел, где ступил...


Проверь всё. ThisWorkbook.Save. On Error Resume Next.

Сообщение отредактировал StoTisteg - Четверг, 26.04.2018, 16:51
 
Ответить
СообщениеВсё. Увидел, где ступил...

Автор - StoTisteg
Дата добавления - 26.04.2018 в 16:45
Xpert Дата: Пятница, 27.04.2018, 11:30 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Люююди! Подскажите, почему не работает макрос?
 
Ответить
СообщениеЛюююди! Подскажите, почему не работает макрос?

Автор - Xpert
Дата добавления - 27.04.2018 в 11:30
Pelena Дата: Пятница, 27.04.2018, 11:37 | Сообщение № 15
Группа: Модераторы
Ранг: Местный житель
Сообщений: 12838
Репутация: 2828 ±
Замечаний: 0% ±

Excel 2010, 2016 & Mac Excel
Так попробуйте
[vba]
Код
If Target.Address = Range("delvr").Address Then
[/vba]


"Черт возьми, Холмс! Но как??!!"
ЯД 41001765434816
 
Ответить
СообщениеТак попробуйте
[vba]
Код
If Target.Address = Range("delvr").Address Then
[/vba]

Автор - Pelena
Дата добавления - 27.04.2018 в 11:37
Xpert Дата: Суббота, 28.04.2018, 12:24 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, спасибо огромное!
Заработало!
 
Ответить
СообщениеPelena, спасибо огромное!
Заработало!

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

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