Проблема превращения даты используя VBA excel

Привет я делаю макросы, которые мне меняет целая колонна, которая с датой этого типа dd.mm.yyyy в dd-mm-yyy, и я использовал следующую команду:

Range("E:E).Select
Selection.Replace What:=".", Replacement:="-", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Selection.NumberFormat = "dd-mm-yyyy"

Однако переписывать это вкладывает меня в день с месяцем, также я попытался с кодом:

Range("E:E).Select
Selection.NumberFormat = "@"
Selection.Replace What:=".", Replacement:="-", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

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

1
задан 14.11.2018, 11:16
2 ответа

Я продолжил исследовать и нашел другой mГ©todo, что делает изменение немедленной формы, хотя он это оставляет в формате dd / мм / aaaa. Если ты хочешь сменить ' / ' на '-' , ты должен использовать mГ©todo Фор Эач с одним Повторно нравится , упомянутый в моем предыдущем ответе.

Восток другой mГ©todo использует Range. TextToColumns вместе с FieldInfo: = Array (0, xlDMYFormat)

- increГ-ble, но остается одиноким в одной lГ-nea. AdemГЎs ячейка не только продолжает быть форматируемой в дате но он допускает любой carГЎcter как разделитель дат.

Range("E:E").TextToColumns FieldInfo:=Array(0, xlDMYFormat)
'1.2.2019 -> 01/02/2019

Пример принятых символов.

introducir la descripción de la imagen aquí

0
ответ дан 20.11.2019, 03:27

Действительно lГ-nea

Selection.Replace What:=".", Replacement:="-",...

реализует ее operaciГіn изменения плохо. Только функционируй, если dГ - в даты источник превышающий 12. В этом случае cГіdigo реализуй Повторно нравься верно.

, Чтобы предотвращать это ее soluciГіn, состоит в том, чтобы форматировать ячейки в способе текст (уже это habГ-схвати факт), выбирать только ограниченный ранг и делать Фор Эач .

Восток cГіdigo функционирует верно.

'VBA
Private Sub f_MiFuncion()

    'Obligatorio si no queremos que recorra la columna entera
    Range("E1", "E" & Range("E1").End(xlDown).Row).Select

    'Obligatorio para que Excel no haga swap ddmm->mmdd
    Selection.NumberFormat = "@"

    'Este método no genera errores de swap
    For Each obj_cell In Selection.Cells
        With obj_cell
            If IsNull(obj_cell) Then Exit Sub
            obj_cell.Value = Replace(.Text, ".", "-")
        End With
    Next
   'Volvemos a formatear como Fecha
    Selection.NumberFormat = "mm/dd/yyyy;@"
End

introducir la descripción de la imagen aquí

0
ответ дан 20.11.2019, 03:27