Доброго всем. Появилась проблема с форматом Даты. Форматирую ячейки любым представлением типа ДД.ММ.ГГГ или ДД.ММММ.ГГ или ММММ.ГГ (скрин№3883684 и №4076160) или каким угодно другим, но при вводе значения даты в ячейку, она отображается своим видом, который ника нельзя изменить. При этом сам формат не меняется. (скрин№9149079) В этом случае данные строк из массива B1612:B1615 не попадают в промежуточные итоги. Это видно на скрине№6554502, эти ячейки имеют формат отличный от формата Даты. Копирую весь столбец в новую книгу, там могу их изменить на необходимы вид, затем обратно копирую в измененном виде из новой книги в старую и в результате они принимают вид как в строках до 1611. НО !!! стоит выделить любую ячейку затем F2 и она снова трансформируется в свой формат как на скринах B1612:B1615 Пробовал много чего включая удаление Styles.xml из архива xl - не помогло.
Может кто знает решение этой проблемы?
Доброго всем. Появилась проблема с форматом Даты. Форматирую ячейки любым представлением типа ДД.ММ.ГГГ или ДД.ММММ.ГГ или ММММ.ГГ (скрин№3883684 и №4076160) или каким угодно другим, но при вводе значения даты в ячейку, она отображается своим видом, который ника нельзя изменить. При этом сам формат не меняется. (скрин№9149079) В этом случае данные строк из массива B1612:B1615 не попадают в промежуточные итоги. Это видно на скрине№6554502, эти ячейки имеют формат отличный от формата Даты. Копирую весь столбец в новую книгу, там могу их изменить на необходимы вид, затем обратно копирую в измененном виде из новой книги в старую и в результате они принимают вид как в строках до 1611. НО !!! стоит выделить любую ячейку затем F2 и она снова трансформируется в свой формат как на скринах B1612:B1615 Пробовал много чего включая удаление Styles.xml из архива xl - не помогло.
Еще одно: В1616 на скринах пустая и никогда не была заполнена. Ее предварительно отформатировал в ДД.ММММ.ГГ и после ввода значения (а я привык вводить так 22/05) она приобретает назойливый вид как на скринах B1612:B1615 Попробовал способ который предложила Pelena : Выделите столбец с датами -- ctrl+h -- Найти . (точку) -- Заменить на . (точку) -- Заменить все не сработал.
Еще одно: В1616 на скринах пустая и никогда не была заполнена. Ее предварительно отформатировал в ДД.ММММ.ГГ и после ввода значения (а я привык вводить так 22/05) она приобретает назойливый вид как на скринах B1612:B1615 Попробовал способ который предложила Pelena : Выделите столбец с датами -- ctrl+h -- Найти . (точку) -- Заменить на . (точку) -- Заменить все не сработал.Литр
[/vba]Данная строка в коде ломала дату (превращала в текст), портила числовые значения. Вот вам целиком исправленный код для модуля листа 2026 с учётом всех правок:[vba]
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo SafeExit If Target Is Nothing Then Exit Sub If Target.CountLarge > 1 Then GoTo SafeExit Application.EnableEvents = False
Dim rng As Range Set rng = Me.Range("B2:P5000")
If Not Intersect(Target, rng) Is Nothing Then
If Not IsDate(Target.Value) Then
If VarType(Target.Value) = vbString Then Target.Value = UCase$(CStr(Target.Value)) End If
End If
AutoFitRow Target End If
If Target.Column = 4 Then
Dim i As Variant i = Application.Match(Target.Value, _ Sheets("СПИСОК").Range("A1:A100"), 0)
If Not IsError(i) Then Me.Cells(Target.Row, "E").Value = _ Sheets("СПИСОК").Cells(i, "B").Value End If
End If
If Not Intersect(Target, Me.Columns("F:G")) Is Nothing Then
If Len(Me.Cells(Target.Row, "F").Value) > 0 And _ Len(Me.Cells(Target.Row, "G").Value) > 0 Then Me.Cells(Target.Row, "H").Value = _ Me.Cells(Target.Row, "F").Value & " - " & _ Me.Cells(Target.Row, "G").Value End If
End If
SafeExit: Application.EnableEvents = True End Sub
Private Sub AutoFitRow(ByVal cell As Range) Dim r As Long r = cell.Row
With Me.Rows(r) .AutoFit
If .RowHeight < 30 Then .RowHeight = 30 If .RowHeight > 120 Then .RowHeight = 120 End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 13 Then Application.CutCopyMode = False End If
End Sub
[/vba]
Литр, У вас проблема в строке: [vba]
Код
Target = UCase(Target.Value)
[/vba]Данная строка в коде ломала дату (превращала в текст), портила числовые значения. Вот вам целиком исправленный код для модуля листа 2026 с учётом всех правок:[vba]
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range) On Error GoTo SafeExit If Target Is Nothing Then Exit Sub If Target.CountLarge > 1 Then GoTo SafeExit Application.EnableEvents = False
Dim rng As Range Set rng = Me.Range("B2:P5000")
If Not Intersect(Target, rng) Is Nothing Then
If Not IsDate(Target.Value) Then
If VarType(Target.Value) = vbString Then Target.Value = UCase$(CStr(Target.Value)) End If
End If
AutoFitRow Target End If
If Target.Column = 4 Then
Dim i As Variant i = Application.Match(Target.Value, _ Sheets("СПИСОК").Range("A1:A100"), 0)
If Not IsError(i) Then Me.Cells(Target.Row, "E").Value = _ Sheets("СПИСОК").Cells(i, "B").Value End If
End If
If Not Intersect(Target, Me.Columns("F:G")) Is Nothing Then
If Len(Me.Cells(Target.Row, "F").Value) > 0 And _ Len(Me.Cells(Target.Row, "G").Value) > 0 Then Me.Cells(Target.Row, "H").Value = _ Me.Cells(Target.Row, "F").Value & " - " & _ Me.Cells(Target.Row, "G").Value End If
End If
SafeExit: Application.EnableEvents = True End Sub
Private Sub AutoFitRow(ByVal cell As Range) Dim r As Long r = cell.Row
With Me.Rows(r) .AutoFit
If .RowHeight < 30 Then .RowHeight = 30 If .RowHeight > 120 Then .RowHeight = 120 End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 13 Then Application.CutCopyMode = False End If