Страницы: 1
RSS
Формула с переменными адресами ячеек через VBA, Проблема с синтаксисом при создании формулы через VBA
 
Добрый день!

Не могу разобраться с правильным синтаксисом при вводе формулы в ячейку с помощью VBA.
Есть строка кода
Код
Cells(PRow,LastCol)=Cells(PRow,KodColumn)&Cells(PRow,StranaColumn)&Cells(PRow,FCColumn

В определенную ячейку вводятся данные по сцепке.
А как вместо данных вставить формулу (=СЦЕПИТЬ())?  
Когда известны ячейки, то у меня получается, а вот когда переменные – нет.
Вроде бы и тема  часто встречается, но пока никак не получается решить вопрос.
Прошу помочь разобраться.
Спасибо!
 
Используйте любое из следующих свойств ячейки:
  • formula (вставка англоязычной формулы)
  • formulalocal (вставка локальной, т.е. русской версии формулы)
Например (не проверял, может не подойти):
Код
cells(PRow,LastCol).formulalocal = "=сцепить(" & Cells(PRow,KodColumn).address(0,0) & ";" & _
                                                 Cells(PRow,StranaColumn).address(0,0) & ";" & _
                                                 Cells(PRow,FCColumn).address(0,0) & ")"
Изменено: Все_просто - 21.04.2015 17:39:22 (красиво дооформил код)
С уважением,
Федор/Все_просто
 
Да, работает.
Большое спасибо!
Подскажите книгу или ресурс, где можно синтаксис подучить, где правильно пробел, а где кавычки ставить (в Уокенбаха вроде бы не нашел, хотя могу сильно ошибаться, т.к. смотрел давно и не очень внимательно)
 
Цитата
Игорь П написал: А как вместо данных вставить формулу (=СЦЕПИТЬ())?
А зачем формулу? Сцепляйте сразу данные.
 
Цитата
Игорь П написал: где правильно пробел, а где кавычки ставить
по факту, formula или formulalocal - это строка. Ее в принципе можно собирать отдельно в какую-нибудь перменную типа strFormula, и скармливать в formulalocal. Единственный критерий - в результате всех манипуляций строка формулы должна быть такой как вы ее записали бы на листе. Т.е., если в формуле встречаются кавычки, их нужно также запихнуть в строку, варианты разные, в основном я делаю так:
строка_до_кавычек & """ & строка_после_кавычек. Только не помню, сколько там кавычек подряд идет, 3 или 4, чтобы получились кавычки внутри строки :)
Использую Deebug.Print для проверки получающейся строки. Если всё нормально, можно скармливать. Если кавычек мало или много - редактируем.

PS тоже не пойму, зачем прописывать формулу макросом, если можно прописать конкретное значение. Есть еще извращения типа запихать формулу на лист, затем ее результат перезаписать в ту же ячейку. Иногда это оправдано, но, имхо, не в этом случае
F1 творит чудеса
 
Почему формула, а не значения (изначально я получал значения, как в первом посте) - все просто до безобразия. Коллеги, которые обрабатывают данные дальше (работают "этажом" выше) сказали надо формула и усе, руками или макросом их не волнует, формула и точка.
Извините, за оффтоп.
Еще раз спасибо за помощь и консультацию
Изменено: Игорь П - 21.04.2015 21:33:23
Страницы: 1
Наверх