Excel的VBA脚本:崩溃的结束如果
问题描述:
详情: 在这一领域,我填补“Z”与由“A”引用单元格修改日期值引用的单元格,根据条件满足。该代码崩溃在内部结束如果线。Excel的VBA脚本:崩溃的结束如果
代码片段:
If Range(x).Value =1 Then
If Day(Range(a)) > Day(Range(b)) Then
Range(z).Value = DateSerial(Year(Range(a)), Month(Range(a)), Day(Range(a)-1)) + TimeSerial(20,0,0)
Else
Range(z).Value = DateSerial(Year(Range(a)), Month(Range(a)), Day(Range(a))) + TimeSerial(20,0,0)
End If
ElseIf Range(y).Value =1 Then
Range(z).Value = DateSerial(Year(Range(a)), Month(Range(a)), Day(Range(a)-1)) + TimeSerial(8,0,0)
Else
Range(z).Value = Range(a).Value
End If
答
你的代码是好的。要么你有一个问题,其中你的一个范围指向无效数据,或者你的模块有损坏。
您可以通过将您的moodules导出到文本文件(在VBA编辑器 - >导出中右键单击模块)来处理腐败,然后导入到干净的工作簿中。
答
它似乎为我测试罚款。
我知道默认属性都为了让代码更简洁被创建,并且我意识到对象不应该需要要与其父对象完全合格的,但我并不总是信任VBA
编译器,我的版本是一点比你长(我用的细胞C1
到C5
测试):
Option Explicit
Sub FullyQualified()
With Excel.ThisWorkbook.Sheets("Sheet1")
If .Range("C1").Value = 1 Then
If Day(.Range("C3").Value) > Day(.Range("C4").Value) Then
.Range("C5").Value = DateSerial(Year(.Range("C3").Value), Month(.Range("C3").Value), Day(.Range("C3").Value - 1)) + TimeSerial(20, 0, 0)
Else
.Range("C5").Value = DateSerial(Year(.Range("C3").Value), Month(.Range("C3").Value), Day(.Range("C3").Value)) + TimeSerial(20, 0, 0)
End If
ElseIf .Range("C2").Value = 1 Then
.Range("C5").Value = DateSerial(Year(.Range("C3").Value), Month(.Range("C3").Value), Day(.Range("C3").Value - 1)) + TimeSerial(8, 0, 0)
Else
.Range("C5").Value = .Range("C3").Value
End If
End With
End Sub
您的意见丹的答案听起来更像是一个无限循环,我 - 是有没有解决任何代码循环提供? – 2013-02-22 06:53:30
其他东西必须在后台编译器 – whytheq 2013-02-22 08:00:29
嗨,为什么我一次一步地执行代码,似乎没有花费很长时间在任何一行代码上。我无法确定。我必须提到的行数是13500.但是,为什么从一天到下一天呢?它可能是我的机器,联想X61? – Selvam 2013-02-25 01:49:39