Excel VBA - формат даты меняется автоматически - PullRequest
1 голос
/ 24 февраля 2012

Я пытаюсь ввести значение Date, добавив месяц к дате в Sheets ("Sheet1"). Ячейки (17, 3). Значение, которое является 01/10/2011, но форматируется как октябрь-11. Затем вернитесь в Sheets ("Sheet1"). Ячейки (17, 4) .Value = LDate, чтобы показать ноябрь-11

sDate = Sheets("Sheet1").Cells(17, 3).Value   --> this shows 01/10/2011 when I hove over sDate
LDate = DateAdd("m", 1, sDate)                --> this shows 01/11/2011 when I hove over LDate

Затем я хочу ввести это значение 01/11/2011 в следующую ячейку

Sheets("Sheet1").Cells(17, 4).Value = LDate
Selection.NumberFormat = "mmm-yy"

Но в ячейке отображается 11.01.2011 (11 января), почему он это делает и как я могу решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

Незначительная проблема

Selection.NumberFormat = "mmm-yy"

Вы ничего не выбрали, поэтому этот формат помещается туда, где вы оставили курсор.

Основная проблема

Вы столкнулись с ошибкой Excel, что она будет интерпретировать даты как в американском формате (со средним порядком байтов), если это возможно при переносе данных на лист.«1/11/2011» будет «11 января 11» для американца, так же как и для Excel.«20/11/2011» не является действительной американской датой, поэтому для Excel это «20 ноября 11».

Я могу продублировать вашу проблему, объявив sDate и LDate в виде строк.DateAdd правильно работает со строками, поэтому LDate корректен, но при помещении в ячейку он неверно истолкован.

Я могу исправить вашу проблему, объявив sDate и LDate как даты:

Dim sdate As Date
Dim Ldate As Date
0 голосов
/ 01 июня 2013

Вместо попытки

Cells(row2,col2) = Cells(row1,col1)

Попробуйте это

Cells(row1,col1).Copy
Cells(row2,col2).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
0 голосов
/ 24 февраля 2012
Selection.NumberFormat = "mmm-yy"

Над строкой меняется формат номера. На самом деле, когда я выполняю ваши шаги, я сталкиваюсь с той же проблемой.

Но числовой формат делает все это автоматическое изменение.

Пример:

  1. Пока я запускаю макрос, предположим, что выбранная ячейка (17,3).

    • Перед запуском макроса: значение ячейки 01/11/2012
    • После запуска макроса: значение ячейки будет изменено / отформатировано как "Jan-12". (Поскольку числовой формат применяется как "mmm-yy", поэтому он считается 01/11/2012 и считается Jan-12)
  2. Второй раз, если вы выберете ячейку (17,4)

    • Перед запуском макроса: значение ячейки 2/11/2012
    • После запуска макроса: значение ячейки будет изменено / отформатировано как "Feb-12"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...