Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-日期的.NumberFormat中存在错误_Vba_Excel - Fatal编程技术网

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