2010 - [решено] макрос преобразования форматов

Аватара пользователя
kontox

2010 - [решено] макрос преобразования форматов

Сообщение kontox »

Подскажите, как используя регулярные выражения переделать формат дат с 10.05.2005 на формат 10-05-2005 . нужно именно макросом , а не ctrl+h и заменить точку на тире
Аватара пользователя
Iska

Re: 2010 - [решено] макрос преобразования форматов

Сообщение Iska »

Надо полагать, его нет у Вас в списке форматов. Насколько я понимаю, перед тем, как использовать пользовательский тип формата в .FindFormat/.ReplaceFormat — его нужно добавить к списку пользовательских форматов. Т.е., что-то наподобие:



Код:

Код: Выделить всё

Option Explicit
Sub Макрос1()
    ActiveSheet.Range("D1").NumberFormat = "dd-mm-yyyy"
    With Application
        With .FindFormat
            .Clear
            .NumberFormat = "m/d/yyyy"
        End With
        With .ReplaceFormat
            .Clear
            .NumberFormat = "dd-mm-yyyy"
        End With
    End With
    ActiveSheet.Cells.Replace What:="", Replacement:="", SearchFormat:=True, ReplaceFormat:=True
    ActiveSheet.Range("D1").NumberFormat = "General"
End Sub

поскольку единственным известным мне способом программного добавления является применение формата к ячейке листа рабочей книги. В примере была взята некая пустая ячейка, отформатирована потребным форматом, сделан поиск и замена, затем эта же пустая ячейка приведена к формату по умолчанию.
Аватара пользователя
kontox

Re: 2010 - [решено] макрос преобразования форматов

Сообщение kontox »

okshef, не -не, тут задачка стоит именно рег.выражениями)
Аватара пользователя
okshef

Re: 2010 - [решено] макрос преобразования форматов

Сообщение okshef »

kontox, можно и без макроса. Откройте окно форматов ячеек, выберите "Все форматы",

в окно "Тип" введите ДД-ММ-ГГГГ
Аватара пользователя
Iska

Re: 2010 - [решено] макрос преобразования форматов

Сообщение Iska »

kontox, упакуйте образец Вашей рабочей книги в архив и выложите последний сюда, либо на RGhost.
Аватара пользователя
okshef

Re: 2010 - [решено] макрос преобразования форматов

Сообщение okshef »

kontox, код такой



Код:

Код: Выделить всё

Selection.NumberFormat = "dd-mm-yyyy"

Вместо Selecton вы можете использовать любое выражение массива, ячейки, а код вкладывать в циклы... Простор для фантазии огромен.



Все зависит от ваших хотелок и начальных условий
Аватара пользователя
Iska

Re: 2010 - [решено] макрос преобразования форматов

Сообщение Iska »

okshef, ему, наверное, всё же надо не просто установить, а заменить только те, где есть установленный формат «dd.mm.yyyy», т.е., по условию. И, наверное, будет проще использовать поиск и замену, что-то наподобие такого:



Код:

Код: Выделить всё

Sub Ìàêðîñ1()
    With Application
        With .FindFormat
            .Clear
            .NumberFormat = "m/d/yyyy"
        End With
        With .ReplaceFormat
            .Clear
            .NumberFormat = "dd-mm-yyyy"
        End With
    End With
    ActiveSheet.Cells.Replace What:="", Replacement:="", SearchFormat:=True, ReplaceFormat:=True
End Sub

хотя меня и удивляет выделенное (полный код был получен из макрорекордера).
Аватара пользователя
kontox

Re: 2010 - [решено] макрос преобразования форматов

Сообщение kontox »

kontox, не понял от:


Цитата kontox:



как можно сделать чтобы отобразились те данные, где

в столбце А тип number (4)
2010 - [решено] макрос преобразования форматов




и ниже по тексту.
Ответить

Вернуться в «Microsoft Office (Word, Excel, Outlook и т.д.)»