Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Megaloman
Статус: Практикант
Рейтинг: 404
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 390
∙ повысить рейтинг »
Чичерин Вадим Викторович
Статус: 10-й класс
Рейтинг: 377
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Номер выпуска:923
Дата выхода:24.08.2009, 23:05
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:362 / 92
Вопросов / ответов:1 / 2

Вопрос № 171477: Подскажите, пожалуйста, как в текстовом поле с форматом дата при помощи ВБА изменить формат текста, то есть даты. Спасибо Эндрю...



Вопрос № 171477:

Подскажите, пожалуйста, как в текстовом поле с форматом дата при помощи ВБА изменить формат текста, то есть даты. Спасибо Эндрю

Отправлен: 19.08.2009, 20:39
Вопрос задал: Ципихович Эндрю, Посетитель
Всего ответов: 2
Страница вопроса »


Отвечает Витер Александр Анатольевич, 5-й класс :
Здравствуйте, Ципихович Эндрю.
Можно. В текстовом поле формат даты задается строковым выражением в кавычках, которое следует после знака \@. Значит нужно это выражение изменить и формат даты, отображаемый полем, изменится.
Макрос такой:
Sub ChangeFieldFormat()
'Переменная для работы с полем
Dim oFld As Field
'Переменные в которые будут записываться части кода поля
Dim sFirstPart As String
Dim sLastPart As String
Dim sDateFormat As String

'Запоминаем поле в документе
Set oFld = ActiveDocument.Fields(1)
'Часть поля до места, где идет определение формата
sFirstPart = Left(oFld.Code.Text, InStr(oFld.Code.Text, "\@") + 1)

'Часть поля, которая начинается с определения формата
sLastPart = LTrim(Mid(oFld.Code.Text, Len(sFirstPart) + 1))

'Строка, определяющая формат даты
sDateFormat = Mid(sLastPart, 1, InStr(2, sLastPart, """") + 1)

'Остаток кода поля после формата даты
sLastPart = LTrim(Mid(sLastPart, Len(sDateFormat) + 1))

'Теперь задаем нужный нам формат даты и склеиваем строки назад
sDateFormat = "dd.MM.yyyy hh:mm:ss, dddd"
'Записываем строку кода в поле. Не забываем про кавычки, в которые нужно поместить строку формата
oFld.Code.Text = sFirstPart & " """ & sDateFormat & """ " & sLastPart
'Обновляем поле
oFld.Update
Set oFld = Nothing
End Sub
Краткие пояснения по функциям работы со строками:
LTrim — удаляет все пробелы с левого края строки
Mid — Возвращает подстроку указанной длины, начиная с указанной позиции
InStr — возвращает положение подстроки (номер символа) в исходной строке.
Len — возвращает количество символов в строке
-----
Лучше день потерять - потом за пять минут долететь!

Ответ отправил: Витер Александр Анатольевич, 5-й класс
Ответ отправлен: 19.08.2009, 22:47

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 253395 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!
    Отвечает HookEst, Специалист :
    Здравствуйте, Ципихович Эндрю.
    вот еще вариант, все то же самое, только для поиска и замены форматной строки используется объект Find и подстановочные знаки:

    Код:

    Option Explicit

    Function SetFieldFormat(Fld As Field, ByVal NewFormat As String) As Boolean
    With Fld.Code.Find
    .Text = "\\\@ \""[!""]@\"""
    .Replacement.Text = "^092@ ^034" & Replace(NewFormat, "\", "^092") & "^034"
    .MatchWildcards = True
    SetFieldFormat = .Execute(Replace:=wdReplaceOne)
    End With
    End Function

    Sub t()
    Dim f As Field
    Set f = ActiveDocument.Fields(1)
    SetFieldFormat f, "d\m\y"
    f.Update
    End Sub

    Успехов.

    Ответ отправил: HookEst, Специалист
    Ответ отправлен: 21.08.2009, 03:58

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 253425 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.7 от 15.08.2009

    В избранное