[英]Excel Type MisMatch with VBA to hide certain rows
我意识到在处理Excel中的VBA TypeMismatch错误方面已经有了许多不错的答复,但是它们似乎都是因情况而异的,并且我不得不承认VBA n00b太多了,不能遵循它们。
因此,我想知道您是否能够在这种特殊情况下为我提供帮助:我已经编写了一个工作簿,并且如果C列中的值小于今天的日期 , 我希望行自动隐藏自己。 * 我为ActiveX命令按钮分配了以下宏: *
Sub Hide_PastOrders()
Dim MyRange As Range, C As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set MyRange = Range("d1:d1000")
MyRange.EntireRow.Hidden = False
For Each C In MyRange
If IsDate(C.Value) And C.Value < Date Then
C.EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
直到最近,它的工作情况都还不错,但现在有时会导致“类型错误的匹配” ,我不确定为什么。 在几个工作表上似乎只是一个问题,它们都分配了相同的宏。
我还实现了一个ActiveX命令按钮来“显示所有行”:
Sub ShowAll_Click()
ActiveSheet.Cells.EntireRow.Hidden = False
End Sub
对此没有任何问题。
另外,我不确定这是否相关,但是我在文档中创建了许多内部引用。 例如,在B5中键入“ = A5”,这样,如果我们对多台设备的租金进行了更改,则只需输入一次即可。 事实证明,这非常令人沮丧,因为每次遇到“ TypeMismatch”错误时,它都会将某些单元格还原为“ = REF”。
如果我使用的方法错误或有任何建议,请告诉我!
谢谢,亚历山德拉。
if语句中的表达式在VBA中没有短路。 尝试这个:
If IsDate(C.Value) Then
If C.Value < Date Then
C.EntireRow.Hidden = True
End If
End If
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.