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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2012, 15:18   #1
Сергей54
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 10
Злость Как запретить Экселю преобразовывать текст в дату?

В одной из колонок листа1 есть данные типа 1-2-0, 2-4-2 и т.п. (колонка отформатирована как текст). Макросом в цикле ищу нужную строку и хочу перенести значение из этой колонки4 на лист2 в колонку5

код:
Worksheets(2).Cells(j, 5).Value = Worksheets(1).Cells(i, 4).Value

Результат: вместо 1-2-0 вижу 01.02.2000, вместо 2-4-2 - 02.04.2002 и т.д. Предварительное форматирование колонки5 на листе2 как текст почему-то помогает не всегда. В настройках Экселя поставил переключатель Вычисления производить ВРУЧНУЮ - всё работает правильно. Но ведь каждый раз при работе с этим файлом это делать неудобно. Как это сделать автоматически при открытии файла и вернуть переключатель назад при закрытии?
Сергей54 вне форума Ответить с цитированием
Старый 16.10.2012, 15:49   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

самый простой вариант решения проблемы - ставить апостроф перед значением
это даст Excel-ю понять, что формат значения - текстовый

Код:
Worksheets(2).Cells(j, 5).Value = "'" & Worksheets(1).Cells(i, 4).Value
EducatedFool вне форума Ответить с цитированием
Старый 16.10.2012, 15:53   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Если вы хотите на врем работы макроса отключать пересчёт формул - это делается так:

Код:
Private Sub Workbook_Open()
    ' при открытии файла - включаем ручной пересчёт
    Application.Calculation = xlCalculationManual
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' перед закрытием - восстанавливаем автоматический пересчёт формул
    Application.Calculation = xlCalculationAutomatic
End Sub
Код надо поместить в модуль ЭтаКнига

PS: Не думаю, что этот вариант вам поможет.
У вас проблема не в перечёте формул, а в автоматической конвертации форматов.
EducatedFool вне форума Ответить с цитированием
Старый 16.10.2012, 16:41   #4
Сергей54
Пользователь
 
Регистрация: 10.10.2012
Сообщений: 10
Хорошо

Именно это мне и нуждно было. Макрос работает как часики, и данные переносятся в нужном виде. По окончании работы с этим файлом этот параметр Экселя (автоматические вычисления) восстанавливается.
Большое спасибо.
Сергей54 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запретить изменять дату на компе( работать задним числом) betirsolt Общие вопросы Delphi 57 11.11.2011 15:08
Как преобразовывать цветовые модели на С# Yura_KoT C# (си шарп) 1 01.04.2011 14:12
Как преобразовывать числа в текст? bluesman Microsoft Office Excel 4 25.09.2010 00:22
Можно ли запретить автопреобразования из числа в дату и обратно? m_v_v Microsoft Office Excel 1 01.06.2010 11:22
как перевести дату в текст zetrix Microsoft Office Excel 0 31.10.2006 07:37