Код VBA для установки формата даты для определенного столбца как "yyyy-mm-dd"

У меня есть макрос, в котором я указываю дату (в мм/дд/гггг) в текстовом поле, и я хочу установить это значение для столбца А в формате yyyy-mm-dd. У меня есть следующий код:

Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value
Sheet1.Range("A2", "A50000") = Format(Date, "yyyy-mm-dd")

... и когда я запускаю макрос, дата все еще находится в формате mm/dd/yyyy.

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

Любая помощь будет оценена...

EDIT: Полный код из комментария к OP ниже:

 Workbooks.Add
 Range("A1") = "Acctdate"
 Range("B1") = "Ledger"
 Range("C1") = "CY"
 Range("D1") = "BusinessUnit"
 Range("E1") = "OperatingUnit"
 Range("F1") = "LOB"
 Range("G1") = "Account"
 Range("H1") = "TreatyCode"
 Range("I1") = "Amount"
 Range("J1") = "TransactionCurrency"
 Range("K1") = "USDEquivalentAmount"
 Range("L1") = "KeyCol"
 Sheets("Sheet1").Range("A2", "A50000").Value = TextBox3.Value
 Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"

Ответ 1

Используйте свойство range NumberFormat, чтобы форматировать формат диапазона следующим образом:

Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"

Ответ 2

Вы применяете форматирование к книге, содержащей код, а не добавленную книгу. Вы захотите получить полную квалификацию листы и ссылки на диапазон. Следующий код делает это и работает для меня в Excel 2010:

Sub test()
Dim wb As Excel.Workbook
Set wb = Workbooks.Add
With wb.Sheets(1)
    .Range("A1") = "Acctdate"
    .Range("B1") = "Ledger"
    .Range("C1") = "CY"
    .Range("D1") = "BusinessUnit"
    .Range("E1") = "OperatingUnit"
    .Range("F1") = "LOB"
    .Range("G1") = "Account"
    .Range("H1") = "TreatyCode"
    .Range("I1") = "Amount"
    .Range("J1") = "TransactionCurrency"
    .Range("K1") = "USDEquivalentAmount"
    .Range("L1") = "KeyCol"
    .Range("A2", "A50000").Value = Me.TextBox3.Value
    .Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"
End With
End Sub

Ответ 3

Он работает, когда вы используете обе строки:

Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000") = Format(Date, "yyyy-mm-dd")
Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000").NumberFormat = "yyyy-mm-dd"