Excel VBA中的宏代码是';我没有按预期运行

Excel VBA中的宏代码是';我没有按预期运行,excel,vba,Excel,Vba,我正在尝试编写一个宏,其中EXCEL执行以下操作: 更改A1、B1、C1等中的数据。。。到特定日期格式(dd-mm-yyy) 使用DATEDIFF函数计算A1和B1中的值之间以及A1和C1之间的天数 将DateDIFF函数的结果放入另一个单元格 我不断得到奇怪的值并重置我的函数 这是我现在正在使用的代码,但我不断遇到错误: Private Sub CommandButton1_Click() Range("A1:A5000").NumberFormat = "dd-mm-yyyy" Rang

我正在尝试编写一个宏,其中EXCEL执行以下操作:

  • 更改A1、B1、C1等中的数据。。。到特定日期格式(dd-mm-yyy)
  • 使用DATEDIFF函数计算A1和B1中的值之间以及A1和C1之间的天数
  • 将DateDIFF函数的结果放入另一个单元格
我不断得到奇怪的值并重置我的函数

这是我现在正在使用的代码,但我不断遇到错误:

Private Sub CommandButton1_Click()
Range("A1:A5000").NumberFormat = "dd-mm-yyyy"
Range("B1:B5000").NumberFormat = "dd-mm-yyyy"
End Sub

Private Sub CommandButton2_Click()

Dim n As Variant
Dim Range("A1:A5000") As Date
Dim Range("B1:B5000") As Date

n = DateDiff("d", Range("A1:A5000"), Range("B1:B5000"))
n = Range("C1:C5000")

End Sub
更新:

VBA中的错误=类型不匹配

对此有更多的解释:

  • 用户将日期复制到前3列(A、B、C)
  • 我的宏(脚本)必须将这些值更改为标准格式(dd-mm-yyyy)
  • 另一个按钮或脚本必须计算以下日期之间的天数: A和B B和C A和C

  • 以3计算的天数必须放在另一列(H或其他什么),以便报告

  • 如果我不太清楚,我很抱歉,这是我第一次使用Stackoverflow


    关于,

    没有进一步的信息,假设你的目标。。。这可能会帮助您:

    Private Sub CommandButton2_Click()
    
        Dim n As Long 'it will give you a number
        Dim LastRow As Long
        Dim C As Range
    
        Application.ScreenUpdating = False
    
        With ThisWorkbook.Sheets("SheetName") 'change this to the actual sheet name
            LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row 'last row on column A
            For Each C In .Range("A1:A" & LastRow)
                C.Offset(0, 2) = DateDiff("d", C, C.Offset(0, 1))
            Next C
        End With
    
        Application.ScreenUpdating = True
    
    End Sub
    

    你是想做一个A1-B1的datediff还是整个范围的datediff?你键入的最后一段表明结尾应该有更多的代码?但是没有-您可以使用该链接添加该代码。此外,请包括您收到的错误消息,并指出触发每个错误的代码行。这些信息不足以理解您遇到的问题。我正在尝试确定整个范围的日期