21

我有一个宏,我在文本框中指定日期(以 mm/dd/yyyy 为单位),我想以 yyyy-mm-dd 格式为 A 列设置此值。我有以下代码:

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

...当我运行宏时,日期仍然是 mm/dd/yyyy 格式。

我怎样才能改变它,使它成为我想要的格式?我一直在尝试通过谷歌研究的多种代码,没有任何东西可以按照我想要的方式设置格式。

任何帮助将不胜感激...

编辑:来自 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"
4

3 回答 3

40

使用范围的NumberFormat属性来强制范围的格式是这样的:

Sheet1.Range("A2", "A50000").NumberFormat = "yyyy-mm-dd"
于 2012-09-07T19:39:30.993 回答
11

您正在将格式应用于具有代码的工作簿,而不是添加的工作簿。您需要养成完全限定工作表和范围引用的习惯。下面的代码可以做到这一点,并在 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
于 2012-09-07T22:25:53.507 回答
2

当您使用两条线时,它可以工作:

Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000") = Format(Date, "yyyy-mm-dd")
Application.ActiveWorkbook.Worksheets("data").Range("C1", "C20000").NumberFormat = "yyyy-mm-dd"
于 2018-03-05T07:50:24.557 回答