3

Я нахожу это очень странным в листе Excel (или, может быть, это только я), по умолчанию все ячейки в листе Excel находятся в общем формате (G), и когда я вписываю значение даты (01.01.2012) в ячейку, формат меняется на дату (D4), что идеально. Но когда я возвращаю значение к некоторому текстовому значению (например, поезд), формат не изменяется на общий формат (или текстовый формат), он все равно остается в формате даты (D4).

Должен ли я включить какой-либо параметр в моем Excel, чтобы изменить формат с даты на общий, когда значение ячейки изменяется с даты на текст?

любая помощь будет высоко оценена.

3 ответа3

1

Нет, ты не можешь этого сделать. Это разовая вещь.

1

Вы рассматривали это вместо этого?

Меняйте NumberFormat при входе в ячейку на "General" NumberFormat каждый раз.

(В любом случае вам нужно будет ввести ячейку в режиме редактирования, чтобы перейти от даты к тексту, чтобы она существенно не отличалась)

Вместо проверки формата, когда вы покидаете ячейку.

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ActiveCell.NumberFormat = "General"
End Sub

Конечно, это может создать другие проблемы с другими ячейками, которые вы не хотите использовать в качестве "общих", но вы можете исключить диапазоны, довольно легко тестируя ...

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If ActiveCell.Column <> 4 Then
      ActiveCell.NumberFormat = "General"
    End If
End Sub

Когда вы вводите дату в ActiveCell, Excel все равно преобразует ее в формат даты при выходе, но, поскольку это "общий" формат, начинать с серийного номера не будет преобразовано в дату, что, по-видимому, является проблемой. у тебя сейчас.

Самым большим недостатком является то, что выбор существующей даты преобразует ее в "Общие", но, находясь в ячейке, вы всегда можете щелкнуть правой кнопкой мыши и отформатировать ее как дату, если вы забыли заметить дату до выхода.

Если вы все еще хотите изучить форматирование ячейки по мере ее выхода, вы можете попробовать это

Сохраните текущий ActiveCell как переменную Public в модуле, чтобы при выходе из него можно было использовать его для проверки формата даты

Функция Cell может быть самым простым способом проверки формата даты.

aCell = Application.Evaluate("=CELL(""format""," & previousCell & ")")
If Left(aCell, 1) <> "D" Then previouseCell.NumberFormat = "General"
0

Вы также можете использовать эту функцию листа:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not IsNumeric(Target.Value) And Not IsDate(Target.Value) Then
    Target.NumberFormat = "General"
  End If
End Sub

Если значение является строкой, то будет установлен общий формат.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .