excel - VB代码不影响报表,如何解决?
问题描述
Sub ProfitLoss_Refresh()
Dim PLRow As Long
Dim LastTransRow As Long
Dim LastResultsRow As Long
Dim AcctRow As Long
With Sheet1
.Range("B7:I99999").ClearContents 'Clear Existing Report
LastTransRow = Sheet2.Range("B99999").End(xlUp).Row 'Last transaction row
Sheet2.Range("P3:Q3").ClearContents 'clear prev criteria
Sheet2.Range("w3:aa99999").ClearContents 'clear prev results
If .Range("e3").Value <> Empty Then Sheet2.Range("p3").Value = ">=" & .Range("E3").Value Else: Sheet2.Range("p3").Value = ">=01/01/2000" 'from date
解决方案
假设您是您发布的代码的一部分是不执行的部分,我仔细研究了工作表的管理方式。事实上,我重写了您的代码以使其更易读(但没有引入更改)。
Sub ProfitLoss_Refresh()
Dim PLRow As Long
Dim LastTransRow As Long
Dim LastResultsRow As Long
Dim AcctRow As Long
With Sheet2
LastTransRow = .Range("B99999").End(xlUp).Row ' Last transaction row
.Range("P3:Q3").ClearContents ' clear prev criteria
.Range("w3:aa99999").ClearContents ' clear prev results
End With
With Sheet1
.Range("B7:I99999").ClearContents ' Clear Existing Report
If .Range("e3").Value <> Empty Then
Sheet2.Range("p3").Value = ">=" & .Range("E3").Value
Else
Sheet2.Range("p3").Value = ">=01/01/2000" ' from date
End If
End Sub
您使用 CodeNames 来处理工作表。如果它们不存在,您可能会抱怨错误消息,并且由于您不这样做,我必须假定它们确实存在。因此,我可以发现您的代码没有任何问题。
因此,这可能是您的期望。您似乎正在设置高级过滤器。您没有向我们展示过滤器的应用位置,但过滤器标准指向潜在问题。如果 Range("E3").Value 是一个日期,它的格式不太可能与“01/01/2000”等价。检查 E3 是正确的日期(数字)还是确实是像“01/01/2000”这样的字符串。还要检查您要过滤的数据是否具有真实日期(数字)或虚假日期(字符串)。阅读 Excel 如何处理日期以及如何过滤日期。