繁体   English   中英

Excel类型MisMatch与VBA一起隐藏某些行

[英]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

参见http://en.m.wikipedia.org/wiki/短路检测

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM