VBA-日期的.NumberFormat中存在错误
我的问题是我的专栏VBA-日期的.NumberFormat中存在错误,vba,excel,Vba,Excel,我的问题是我的专栏DATE的格式是2016年3月16日下午3:19。我的代码运行所需的格式是3/16/2016,现在我正在尝试转换它。这是我在使用代码时遇到的错误: 运行时错误“13”类型不匹配 这是我得到错误的那条线 data = Intersect(Sheet2.Columns("O"), Sheet2.UsedRange).NumberFormat = "mm/dd/yyyy" 这是我的密码: Public Sub Selection() Dim file2 As Excel.Work
DATE
的格式是2016年3月16日下午3:19
。我的代码运行所需的格式是3/16/2016
,现在我正在尝试转换它。这是我在使用代码时遇到的错误:
运行时错误“13”类型不匹配
这是我得到错误的那条线
data = Intersect(Sheet2.Columns("O"), Sheet2.UsedRange).NumberFormat = "mm/dd/yyyy"
这是我的密码:
Public Sub Selection()
Dim file2 As Excel.Workbook
Dim Sheet2 As Worksheet, data(), i&
Set Sheet2 = Workbooks.Open(TextBox2.Text).Sheets(1)
' load the data from column O
data = Intersect(Sheet2.Columns("O"), Sheet2.UsedRange).NumberFormat = "mm/dd/yyyy"
'set the title
data(1, 1) = "Month"
' extract the month
For i = 2 To UBound(data)
If VarType(data(i, 1)) = vbDate Then
data(i, 1) = Month(data(i, 1))
End If
Next
' write the data back to the sheet
Sheet2.UsedRange.Columns(Sheet2.UsedRange.Columns.Count + 1) = data
End Sub
我试过使用:
outputWksht.Columns(24).NumberFormat=“mm/dd/yyyy”
及
单元格(1,1)。值=格式(起始日期,“dd/mm/yyyy”)
没有错误,但它不工作,我想知道为什么???你能试试这个吗
Cells(1, 5).NumberFormat = "dd/mm/yyyy"
试一试
尝试更改此选项:
For i = 2 To UBound(data)
If VarType(data(i, 1)) = vbDate Then
data(i, 1) = Month(data(i, 1))
End If
Next
为此:
For i = 2 To UBound(data)
data(i, 1) = Month(CDate(data(i, 1)))
Next i
我试过了,但它不起作用,谢谢你的回答,我刚刚试过,它起作用了。你能更详细地描述一下吗?这是您的输入,结果看起来如何,我已经声明了数据,Dim Sheet2作为工作表,data(),i&您在哪里?顺便说一句。我想从包含日期的O列返回月值,但我从ODo列得到的是精确值。您在“O”列中有一个合并单元格?@florentbr是的,这就是我的专栏日期哇,现在开始工作了!感谢您的@vegard,因此我的代码是mm/dd/yyyy格式,而您的代码是2016年3月16日3:19pmy我的代码修复了可能的不匹配,并通过强制将值变为
日期
类型,使应用正确的数字格式变得更加容易。一旦它被放在工作表上,您应该能够应用任何您想要的格式。因为我尝试了mm/dd/yyyy,并且我得到了一个错误类型不匹配,但是现在我再次运行它,它现在可以工作了,但是在输出中有一些错误。。我有19行,我用的是march,所以值是3,所有19行都是3,但有第20行,值是12,你必须给我们显示错误单元格的原始数据和过程的结果。我在其他文件上尝试过它的工作原理,问题是我使用的文件,我认为它与格式有关
For i = 2 To UBound(data)
data(i, 1) = Month(CDate(data(i, 1)))
Next i