Запись даты в ячейку и изменение формата даты

#excel #vba

#excel #vba

Вопрос:

У меня есть некоторые проблемы с моим кодом VBA. Я получил переменную даты, которая хранится как dd/mm/yyyy , но когда я записываю дату в определенную ячейку, формат меняется mm/dd/yyyy , я пробовал много вариантов, но ни один из них не работал для меня, я также проверяю, чтобы переменная знала, какой текущий день, месяц и год.

Код:

 Sheets("report_orders").Select
Range("A1").Value = customerName
Range("A2").Value = "äæîðä " amp; orderID
Range("A3").Value = "äæîðä ì÷åç " amp; orderPo
'Range("B2").Value = orderDate
Range("B2").Value = Day(orderDate) amp; "/" amp; Month(orderDate) amp; "/" amp; Year(orderDate)
Debug.Print "year " amp; Year(orderDate)
Debug.Print "month " amp; Month(orderDate)
Debug.Print "day " amp; Day(orderDate)
 

значение даты

но результат :

введите описание изображения здесь

Комментарии:

1. docs.microsoft.com/en-us/office/vba/api/…

2. Вы можете использовать Format() функцию.

3. Date variable that stored as dd/mm/yyyy — это не сохраняется таким образом, потому Date что переменные не имеют формата. Вы должны удалить свой код и заменить его на Range("B2").Value = orderDate , и вы должны применить форматирование даты, которое вы хотите, к ячейке.

4. Я пробую все это, ни один из этих вариантов не сработал

5. @lidorag вы пробовали то, что предложил BraX? Range("B2").NumberFormat = "mm/dd/yyyy" и затем Range("B2").Value = orderDate . Это, безусловно, сработает

Ответ №1:

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

 Range("B2").NumberFormat = "mm/dd/yyyy"
Range("B2").Value = orderDate
 

Вы можете прочитать больше о .NumberFormat диапазоне in.Свойство NumberFormat (Excel)

Комментарии:

1. Я внес некоторые изменения. Не стесняйтесь откатить, если вам не нравятся изменения 🙂

2. @Gustav. Это неправильное редактирование. Я откатил его назад. Пожалуйста, убедитесь, что вы понимаете, прежде чем редактировать ответ 🙂 Ячейка должна быть отформатирована перед вводом даты. Это также подтверждается OP в комментарии под вопросом 😉

3. @SiddharthRout: я не откатывал его, я исправил его, потому что ваше утверждение неверно. Числовой формат может быть применен в любое время. Но я неправильно истолковал запрос на формат даты, извините.

4. @SiddharthRout: I didn't roll it back, I corrected it because your statement is wrong. The numberformat can be applied at any time. But I misread the request for the date format, sorry. – Gustav just now @Gustav: Я никогда не говорил, что ты откатил его назад 🙂 Также мое утверждение не является неправильным. Что касается … The numberformat can be applied at any time. Я никогда не оспаривал этот факт. вы можете применить его в любое время. Но чтобы увидеть эффект, вы должны применить его перед вводом даты.

5. @SiddharthRout: Я никогда не оспаривал этот факт. вы можете применить его в любое время. Но чтобы увидеть эффект, вы должны применить его перед вводом даты. … Так что вы можете, но вы не можете. Запутался? Конечно, вы можете изменить формат, когда захотите, и отображение изменится соответствующим образом.