[Excel] Присвоение значения ячейке
Добрый день!
Необходимо в определенные ячеки листа внести определенные формулы из скрипта. Делаю так: Код:
Dim sheetWithKvit As Worksheet Как реализовать банальнейшее присвоение значения ячейке??? Понимаю, что задача банальна, но как ни смешно, не могу понять как это закодировать. |
Цитата:
Цитата:
Using Microsoft Excel Worksheet Functions in Visual Basic [Excel 2003 VBA Language Reference]: Цитата:
|
Так работает:
Код:
Worksheets("Лист1").Cells(curRowInKvit, curCollumnInKvit).FormulaR1C1 = "=Лист2!G" Код:
Worksheets("Лист1").Cells(curRowInKvit, curCollumnInKvit).FormulaR1C1 = "=Лист2!G" + Str(curRow) Суть задачи в том, что необходимость реализовать именно динамическую сборку формул. Но не могу понять как. P.S. Это реализуется мной в Office 2003 |
PhilB, я уже говорил выше:
Цитата:
|
Суть задачи:
Есть view в БД MS Access. И шаблон квитанции в Excel. Суть задачи: получить данные из БД, и не основе шаблона сгенерировать квитанции, подставив туда соответсвующие данные. То есть получается по сути операция типа слияние в word. В excel подобного я не нашел, посему пишу скрипт. Весь код: Код:
Sub Макрос2() Лист копирую, т.к. при копировании диапазона, почему-то не сохраняется форматирование. Вообще, оно какое-то мутное. Видимо, надо и книгу указывать, а не только лист, но она создается кодом Sheets("Лист1").Copy, и как получить имя книги не ясно. Толковой книги так и не нашел :(. Натолкните на ошибку, пожалуста. Iska, спасибо за внимание. |
К сожалению, чтобы воспроизвести ошибку — мне понадобятся все Ваши данные. Так что, сие, скорее всего, отпадает.
Цитата:
Цитата:
Код:
Worksheets("Лист1").Cells(curRowInKvit, curCollumnInKvit).Formula = "=Лист2!G" & СStr(curRow) |
Да, после замены фукнции Str на CStr все заработало как надо.
Следующая конструкция оказалась рабочей: Код:
Cells(curRowInKvit, curCollumnInKvit).Formula = "=Лист2!G" + СStr(curRow) |
PhilB, напомню ещё, на всякий случай, про разницу в свойствах «.Formula»/«.FormulaLocal»: если у Вас локализованная версия, и Вы будете использовать в ячейках формулы рабочего листа (например, «СУММ()»/«SUM()»), то свойство «.Formula» ожидает увидеть в текстовой строке присвоения свойства англоязычные наименования формул рабочего листа — например, «SUM()», а свойство «.FormulaLocal» — соответственно, локализованные наименования формул рабочего листа, в данном случае — «СУММ()».
|
Не могу снять сумму с массива данных, ибо некоторые из этих данных по условию ложны. Не могу дать нулевое значение ложной переменной.
Я, честное слово, не умею на вашем языке разговаривать. Но, если я пытаюсь научить ячейку показывать ноль, при ложном значении, но, числовое значение, при истинном, то возникает цикличность, формула не работает. Это никак не обойти? |
Евгений_Косьяненко@fb, выложите Вашу рабочую книгу. Укажите диапазон массива.
|
Доброго времени суток. Подскажите пожалуйста, есть такой код:
Код:
Imports System Во-вторых, где можно почитать про форматирование ячеек? Хотелось бы задать текст по центру, шрифт и.т.д. В-третьих файл не *xlsx не сохраняется по указанному пути. P.S. ссылку на Microsoft Office 14.0 Object Library делал... Но как ей воспользоваться - не знаю :( P.S.S. С третьим вопросом разобрался. |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Теперь выдает следующую ошибку: Член группы не найден. (Исключение из HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) в данной части кода Exc.sheets(1).range("A" & i).value = Me.EIDText
Сам код: Код:
Imports System Цитата:
|
Вложений: 1
Архив с проектом прикрепил.
|
Проблему решил.. Чуть позже выложу код с изменениями.
P.S. Проблема была в отсутствии Text.ToString, т.е. строка должна была быть вот такой: Exc.sheets(1).range("A" & i).value = Me.EIDText.Text.ToString |
Добрый вечер.
Подскажите как ввести формулу в ячейку Excel при помощи VBA. Формула содержит функцию, написанную в VBA и имеет такой синтаксис: =MyFunc($A16;"15") iRowNum это переменная с номером строки листа. Я пробовал так: Range("G" & CStr(iRowNum)).Formula = "=MyFunc($A" & CStr(iRowNum) & ";" & CStr(15) & ")" но VBA при запуске выдает: "Application defined or object defined error". |
Цитата:
Попробуйте код ниже: Range("G" & CStr(iRowNum)).Formula = "=MyFunc($A" & CStr(iRowNum) & ",""15"")" |
Цитата:
|
Подскажите, как ввести через VBA такую формулу в ячейку:
=ЕСЛИ(A4<>"";F4-A4;"--") пока я ввожу так и это работает: Range("I" & CStr(iRowNum)).Formula = "=F" & CStr(iRowNum) & "-A" & CStr(iRowNum) но будет ли скомпилировано имя функции, написанное кириллицей? |
stuermer01, запустите макрорекордер и посмотрите, что выйдет. Например:
Код:
Sub Макрос1() |
Подскажите, как в VBA скопировать только формулу из одной ячейки в другую без использования буфера обмена?
Нужно чтобы формула была приведенная к номеру строки новой ячейки и не менялось форматирование и условное форматирование новой ячейки, т.е. копировалась только формула. Я этого добился только через copy-paste "вставить только формулы", но это не очень красиво. Можно ли это проделать с помощью метода range().copy или присвоения ? |
Можно вставить только формулу. А вот скопировать только формулу в Вашем понимании нельзя.
Код:
Selection.PasteSpecial Paste:=xlPasteFormulas |
Цитата:
|
stuermer01, именно так.
|
Время: 04:34. |
Время: 04:34.
© OSzone.net 2001-