После вставке в ячейку и дальнейшем удалении в ручную точки с запятой ексель автоформатирует текст в дату которую распознает - как автоматизировать данную операцию или какой то другой вариант.
выделяете столбец с этими датами(или только нужные ячейки) -сочетание клавиш Ctrl+H. Найти: ".,"(без кавычек), Заменить на: оставляете поле пустым. В этом же окне раскрываете кнопку Параметры и убеждаетесь, что с пункта "Ячейка целиком" снята галочка. Жмете Заменить все. Преобразование должно потом произойти автоматически.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
В макросе который обрабатывается по изменению на листе есть две проблемы - но в целом работает: 1. При действии удаление - вставляет содержимое буфера 2. При вставке обработанного значения из соседнего столбца - преобразует в дату и добавляет строку или подобный символ (Пример ячейка Q9), что не дает распознать ячейку как дату 3. Периодами вываливается с ошибкой на алгоритм и макрос вообще перестает работать до перезагрузки
Код
Private Sub Worksheet_Change(ByVal Target As Range)
'On Error GoTo ErrorHandler
If Not Intersect(Target, Range("g9:z9")) Is Nothing Then
'If WorksheetFunction.Count(Intersect(Target, Range("g9:z9"))) > 0 Then
Application.EnableEvents = False
Application.Undo
Dim MSForms_DataObject As Object
Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
With MSForms_DataObject
.GetFromClipboard
Target = Replace(.GetText(1), ".,", "")
End With
Application.EnableEvents = True
Set MSForms_DataObject = Nothing
'End If
End If
ErrorHandler:
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range, cell As Range
Set rg = Intersect(Target, Range("G9:Z9"))
If Not rg Is Nothing Then
Application.EnableEvents = False
For Each cell In rg.Cells
cell.FormulaLocal = Replace(cell.FormulaLocal, ".,", "")
cell.NumberFormat = "dd.mm.yyyy hh:mm"
Next cell
Application.EnableEvents = True
End If
End Sub