template<class F>
auto shared_function( F&& f ){
auto spf=std::make_shared<std::decay_f<F>>(std::forward<F>(f));
return [spf=std::move(spf)](auto&&...args)->decltype(auto){
return (*pf)(decltype(args)(args)...);
};
}
владеет им в общем ptr. Немного меняет семантику, но исправляет ее.
Или напишите свою собственную функцию non-copyd std.
Можно использовать объект Диапазона в VBA для устанавливания значения именованной ячейки, точно так же, как любая другая ячейка.
Range("C1").Value = Inputbox("Which job number would you like to add to the list?)
Где "C1" является названием ячейки, Вы хотите обновить.
Мой Excel VBA немного стар и тверд, таким образом, может быть лучший способ сделать это в более новых версиях Excel.
Я всегда рекомендую использовать именованный диапазон (поскольку Вы предположили, что делаете), потому что, если какие-либо столбцы или строки добавлены или удалены, ссылка имени обновит, тогда как при твердом кодировании ссылки на ячейку (например, "H1", как предложено в одном из ответов) в VBA, затем это не обновит и укажет на неправильную ячейку.
Так
Range("RefNo") = InputBox("....")
более безопасно, чем
Range("H1") = InputBox("....")
Можно установить значение нескольких ячеек, также.
Range("Results").Resize(10,3) = arrResults()
где arrResults является массивом по крайней мере 10 строк и 3 столбца (и может быть любой тип). Если Вы используете это, помещаете это
Option Base 1
наверху модуля VBA иначе VBA предположит, что массив запускается в 0 и поместил пустую первую строку и столбец в листе. Эта строка заставляет все массивы запуститься в 1 как значение по умолчанию (который может быть аварийным на большинстве языков, но работает хорошо с электронными таблицами).
Я сделал такого рода вещь с формой, которая содержит TextBox.
Таким образом, если Вы хотели вставить, это говорит ячейку H1
, затем использование:
ActiveSheet.Range("H1").Value = txtBoxName.Text