Страницы: 1 2 След.
RSS
Формула в VBA
 
Доброе всем утро!

Делаю так, чтобы число в ячейке умножалось на 1,18
Подскажите, пожалуйста, почему VBA не нравится формула?
Ругается именно на нее  :cry:

Код
Sub UmnojitNDS()
    Dim C As Range
    Dim X As Variant
       
    With Selection
        For Each C In Selection
            X = C.Value
            C.Formula = "=" & X & "*1.18"
        Next C
    End With
    
End Sub
В полете голова - важнее крыльев
 
Зачем формула? Сразу умножайте
Код
C.Value=C.Value*1.18
 
Сама я могу умножить
Именно в этом и дело - нужно чтобы в каждой ячейке сохранилось значение, которое в ней было до моей обработки
Понимаю, что это можно сделать, но не понимаю - что именно я делаю не так...
Изменено: Li$$@ - 13.08.2013 09:45:36
В полете голова - важнее крыльев
 
Вы сами себе противоречите: нужно умножить значение в ячейке на 1,18 и в то же время чтобы сохранилось "старое" значение. Где истина?
 
Нужно, чтобы в ячейке после выполнения операции в режиме редактирования видели вот это:
=7,2 * 1,18
а не 8,496
В полете голова - важнее крыльев
 
Тогда запишите

C.Value=C.Value & "*" & 1.18
Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.
 
Abakumov, спасибо
Это я и пытаюсь сделать, только без знака равно результата вычислений не видно, а прилепить его  в начале не получается - беру его в кавычки, сцепляю при помощи & и не нравится VBA такой код почему-то ((
Изменено: Li$$@ - 13.08.2013 09:55:37
В полете голова - важнее крыльев
 
Попробуйте так:
Код
C.Value = "'=" & C.Text & "* 1,18"
 
Цитата
только без знака равно результата вычислений не видно
Так Вам нужен РЕЗУЛЬТАТ или отобразить ФОРМУЛУ? Формулируйте точнее...
 
Юрий М, пробую - тогда я вижу содержимое ячейки не только в режиме редактирования
А без этой кавычки никак не хочет писать  
Что ж ему нужно-то .. :cry:
Изменено: Li$$@ - 13.08.2013 09:59:15
В полете голова - важнее крыльев
 
А Вам ЧТО нужно?
 
Коллеги, ну я же, простите, сформулировала ..
"Нужно, чтобы в ячейке после выполнения операции в режиме редактирования видели вот это: "
И с этого и начала - просто к значению дописать формулу
Изменено: Li$$@ - 13.08.2013 10:02:10
В полете голова - важнее крыльев
 
Ещё раз (последний) Вам нужен результат или визуальное отображение формулы?
 
Мне нужно, чтобы в я чейке было написано = старое значение * 1,18
БЕЗ  каких либо апострофов и одинарных кавычек в начале
Чтобы формула была обычная и выводила результат, но в режиме редактирования видно было  = старое значение * 1,18
В полете голова - важнее крыльев
 
Ага, кажись понял, нужно только это делать через R1C1

http://www.planetaexcel.ru/techniques/11/113/?sphrase_id=129492
Когда испробованы все варианты, я начинаю плясать с бубном. Как правило — помогает.
 
Abakumov, мне не нужно делать ссылку ни на одну ячейку, поэтому R1C1 ничем не поможет
нужно к старому значению дописать = в начале и в конце *1.18

Дописываться не хочет именно знак =
Изменено: Li$$@ - 13.08.2013 10:09:38
В полете голова - важнее крыльев
 
Тогда у Вас будет ссылка на саму ту ячейку, где находится значение. Попробуйте вручную написать такую формулу. Получится? В ячейке может быть ИЛИ формула, или константа. Выход - формулу писать в соседнюю ячейку.
 
Юрий М, я поэтому и хочу записать значение ячейки в переменную, а затем написать там формулу с использованием значения переменной
Ручками это как раз сделать получается - зайти в ячейку, где написано 7,2, и в начале дописать =, а в конце *1.18

Вот такой код работает вообще без проблем

Код
Sub UmnojitNDS()
    Dim C As Range
    Dim X As Variant
       
    With Selection
        For Each C In Selection
            X = C.Value
            C.ClearContents
            C.Value = X
        Next C
    End With
    
End Sub


Но если я хочу использовать значение, записанное в X, для формулы в ячейке, в которой только что сделала ClearContents, то ничего не выходит
В этом и прошу помочь разобраться
Изменено: Li$$@ - 13.08.2013 10:15:30
В полете голова - важнее крыльев
 
Это VBA знает, что такое переменная, а ячейка (формула) этого не понимает.
 
Так я и делаю в VBA - записала значение ячейки в переменную, в пошаговой отладке хорошо видно, что все нормально работает. И далее хочу использовать это значение в формуле

Хотите сказать, что это невозможно сделать в VBA?

Т.е. после знаков, находящихся в ячейке, знаки и символы свои добавить можно, а перед - нельзя?
Изменено: Li$$@ - 13.08.2013 10:23:49
В полете голова - важнее крыльев
 
Вы никак меня не поймёте: в VBA возможно или вычислить, или вставить в ячейку формулу. Но формула не знает, что такое переменная - она остаётся "внутри" VBA. Вставляйте ОБЫЧНУЮ формулу (без переменной) в соседнюю ячейку.
 
Юрий М, если бы допустимо было решить вопрос в соседней ячейке - я бы с этим не морочилась вообще...
В итоге мне нужно будет каждое значение ячейки огромного диапазона умножать на значение, зафиксированное в отдельной ячейке. Переделать это вручную - грустно (

Ок, а если разбить задачу на две части
1. сделать как вы предложили
Код
C.Value = "'=" & C.Text & "* 1,18"

2. убрать тот самый знак ' из ячейки программного как-то можно? Я попробовала - не вышло
Изменено: Li$$@ - 13.08.2013 10:40:04
В полете голова - важнее крыльев
 
И не выйдет: повторюсь - в ячейке может быть или формула, или ЗНАЧЕНИЕ.
 
Пусть у меня просто будет файл, в котором будет много цифр, перед которыми написан этот апостроф (НЕ этот пример вообще) - я не могу никак удалить эту одинарную кавычку?
Только руками заходить в каждую ячейку и удалять?!!!
В полете голова - важнее крыльев
 
Можете: Replace
 
Хотя, с удалением ведущего апострофа будут проблемы. Помнится, что подобная проблема уже обсуждалась. Но удаление апострофа не решит Вашей задачи - вы пытаетесь в ячейке получить ТЕКСТ, который ничего вычислять не будет.
 
Ну если текст формулы уже сложился, то теперь удалить из нее лишний знак и обновить содержимое ячейки - мне думается можно, должно заработать
Сейчас поищу про удаление апострофа
В полете голова - важнее крыльев
 
Ещё вариант: в ячейке вычислять значение макросом а формулу отображать в примечании.
 
Ух сколько понаписано.
А у меня прекрасно работает макрос из первого поста :)
Главное чтоб не было пустых ячеек в выделенном. И текста.
Так что всё дело в "волшебных" разделителях.
 
Hugo, как я вам завидую!!!

У меня нет пустых ячеек и текста и ничо не работает
Мне кажется, у меня редактор сошел с ума, потому что даже код  с сайта Майкрософт (http://support.microsoft.com/kb/213440) по удалению апострофа не работает тоже  :o - не мой сегодня день  :evil:
В полете голова - важнее крыльев
Страницы: 1 2 След.
Читают тему
Наверх