2016-03-04 2 views
0

Здравствуйте, Это мой первый вопрос, и мой английский не самый лучший, поэтому я постараюсь сделать все возможное, чтобы его понимали.Формат данных в ячейке VBA

У меня есть код, где мне нужно вставить данные в формате «dd/mm/yyyy» в ячейку, но я не знаю его формата, и я не могу его изменить (защищенный лист).

Dim sReversalDate As String 
sReversalDate = "" & Format(DateSerial(Year(Now()), Month(Now()), 1), "dd/mm/yyyy") 
sh.Range("M10").Value = sReversalDate 

Во время отладки значение моего sReversalDate является «01/03/2016», но после того, как положить его в клетку, Range("M10").Value является «3/01/2016». Вы знаете, как я могу решить эту проблему? Еще раз - я не могу изменить защиту листа, или, может быть, я не хочу :) Я хочу проверить, возможно ли это. Thanks

Еще одна вещь. Для нескольких ячеек я сделал трюк с «» до даты, и он работает. В этом конкретном случае я не могу этого сделать, потому что ячейка связана с другой, которая проверяет ее и кричит «эй, дата форматирования!». и т.д.

Спасибо за ваше время и помочь ребята :)

+0

Пожалуйста, проверьте форматирование ячейки после внесения значения. В зависимости от настроек системы введенное значение может быть переформатировано в настройках США. Если вам все равно, является ли введенное значение текстом, вы можете просто вставить символ перед значением -> sh.Range («M10»). Значение = «'» & sReversalDate –

+0

Я знаю эту вещь. Я написал это и в своем посте, но для этого конкретного случая я не могу этого сделать, потому что эта ячейка «защищена» другой ячейкой, которая проверяет введенный тип данных и кричит, когда это неверно. Также я не могу узнать формат этой ячейки, потому что ее каким-то образом изменили, и я вижу «Общее» в «Тип данных». Иногда его «Бухгалтерский учет» (так что я предполагаю, что он где-то изменился). Я закончил с этим .. у меня нет идей – Damian

ответ

0

Изменить начальное форматирование "mm/dd/yyyy", то в конце изменить формат ячейки на "dd/mm/yyyy;@"

Dim sReversalDate As String 
sReversalDate = "" & Format(DateSerial(Year(Now()), Month(Now()), 1), "mm/dd/yyyy") 
sh.Range("M10").Value = sReversalDate 
sh.Range("M10").NumberFormat = "dd/mm/yyyy;@" 
+0

Как я уже говорил, я не могу изменить формат ячеек из-за того, что этот рабочий лист защищен. Я также не могу изменить защиту этой книги. – Damian

+0

Как вы можете заполнить значение в ячейке M10, если лист защищен? –

+0

IDK, я думаю, что свойства ячеек защищены, потому что вся лента и контекстное меню серые (я имею в виду, что я не могу изменить f.e, шрифты, границы и т. Д.), Но я могу изменять значения ячеек. Это возможно и достаточно ясно описано?Извините за мой английский – Damian

0

Написать на следующее начало кода:

ActiveSheet.Unprotect Password:="myPassword" 

И это в конце:

ActiveSheet.Protect Password:="myPassword" 
+0

Я не знаю пароля защиты для этого проекта, и я не хочу уничтожать эту книгу. Это безопасно? Я имею в виду, это пароль для этой книги, который я не знаю, будет таким же после этих строк кода, и это позволит мне изменить формат ячейки? Извините за «вопросы новичков», я все еще учусь – Damian

+0

Да, если он защищен и у него есть пароль, то этот фрагмент кода оставит WB точно так же, как и до запуска кода ... –

+0

Да, это отличная идея, но я не знаю пароля для изменения защиты этой книги :) – Damian

0

Хорошо, я сделал это другим способом. я добавил одну строку ниже код:

sReversalDate = "'" & Format(DateSerial(Year(Date), Month(Date), 1), "mm/dd/yyyy") 
.Range("M10") = sReversalDate 
.Range("m10") = Right(sReversalDate, Len(sReversalDate) - 1) 

В моем случае его работы. Я думаю, что форматирование ячейки плохое, а месяцы меняются днями. В любом случае, вероятно, никто из вас не узнает ответ, не глядя на эту конкретную книгу.

На самом деле, ни один из ответов не верен, но есть ли возможность дать +1, если кто-то мне не помог, но по крайней мере он пытался?

Я хотел бы поблагодарить всех за ваше время :)

+0

Да, это более или менее то, что я предлагал в своем комментарии, однако имейте в виду, что после ввода символа он автоматически преобразует значение ячейки на текст (независимо от содержания) –

Смежные вопросы