Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2009, 12:54   #1
voievod
Новичок
Джуниор
 
Регистрация: 22.08.2009
Сообщений: 4
По умолчанию Проверка ячейки на значение и форматирование диапазона

Здравствуйте, с макросами я, к сожалению, только-только знакомлюсь поэтому даже простые вещи для меня ещё сложно, перерыл интернет нашёл кое что из готового, но либо работало не так как мне нужно, либо не работало вообще.

В общем задача: есть ячейка D5 в которую из другой ячейки на другом листе сбрасывается знак используемой валюты $ или €, нужно чтобы макрос автоматически проверил значение в ячейке D5 и в зависимости от знака валюты отформатировал бы диапазон сумм R3:R18 на этом же листе в соответствующую валюту, то есть вместо 1000,0 написал бы €1000,0. Знаю, что должно быть просто до безобразия, но сам пока не справляюсь, помогите кто знает.
voievod вне форума Ответить с цитированием
Старый 22.08.2009, 13:10   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

При ручном выборе валюты из выпадающего списка макрос достаточно прост:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [d5].Address Then [r3:r18].NumberFormat = "[$" & [d5] & "] #,##0.0"
End Sub



Каким образом в ячейку D5 сбрасывается знак используемой валюты?
Формулой, макросом, через DDE?
EducatedFool вне форума Ответить с цитированием
Старый 22.08.2009, 13:39   #3
voievod
Новичок
Джуниор
 
Регистрация: 22.08.2009
Сообщений: 4
По умолчанию

этот вариант работает, спасибо, правда есть один момент знак валюты сбрасывается в ячейку формулой, точнее просто ссылкой на ячейку на другом листе, по этому видимо для того чтобы сработал макрос, нужно ещё раз кликнуть на D5 и нажать enter иначе как я вижу он автоматом это сделать не может, посоветуйте как сделать чтобы всё-таки это происходило автоматом, изменить способ получения знака в D5?
voievod вне форума Ответить с цитированием
Старый 22.08.2009, 14:19   #4
voievod
Новичок
Джуниор
 
Регистрация: 22.08.2009
Сообщений: 4
По умолчанию

я так сам предполагаю, что лучше чтобы макрос читал сразу из ячейки откуда выбирается знак валюты, то есть тоже D5 только на другом листе, как добавить в код ссылку на ячейку D5 к примеру на Sheet2, а то я и так и этак, но что-то ошибку показывает
voievod вне форума Ответить с цитированием
Старый 22.08.2009, 16:50   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Надо перенести код в модуль другого листа - того, на котором происходит выбор валюты в ячейке D5

И немного изменить адрес обрабатываемого диапазона:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [d5].Address Then worksheets("СюдаПишемНазваниеЛиста").[r3:r18].NumberFormat = "[$" & [d5] & "] #,##0.0"
End Sub
Если самостоятельно не справитесь - выкладывайте свой файл, сделаем.
EducatedFool вне форума Ответить с цитированием
Старый 24.08.2009, 11:24   #6
voievod
Новичок
Джуниор
 
Регистрация: 22.08.2009
Сообщений: 4
По умолчанию

о спасибо заработало если что буду ещё спрашивать, а лучше конечно самому всё выучить
voievod вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка диапазона ячеек Last Microsoft Office Excel 9 16.08.2009 19:19
Форматирование ячейки по образцу yuretsnsk Microsoft Office Excel 4 19.06.2009 07:44
Задание по формированию графика из диапазона значений ячейки. sonix Microsoft Office Excel 0 03.02.2009 20:35
проверка диапазона Bezdar Microsoft Office Excel 15 30.07.2008 08:59
Форматирование ячейки Nando Microsoft Office Excel 1 18.02.2008 01:35