【问题标题】:Difficulty working with ranges and native Excel formulas in VBA难以在 VBA 中使用范围和原生 Excel 公式
【发布时间】:2014-06-21 11:08:29
【问题描述】:

我有一个大小合适的工作表,我想删除/清除任何空单元格的内容。它们没有空格或任何我能看到的字符(Len() 返回零)并且它们被 Counta 计数。

这是我开发的宏,它应该清除选择中长度为零的每个单元格的内容:

Sub NoNull()
Dim rCell As Range
Dim iLen As Integer
 For Each rCell In Selection
    iLen = WorksheetFunction.Len(Range(rCell))
    If iLen = 0 Then rCell.ClearContents
 Next rCell
End Sub

我在这一行得到一个错误:

iLen = WorksheetFunction.Len(Range(rCell))

我认为这与我将 rCell 输入Len 公式的方式有关。

【问题讨论】:

  • iLen = WorksheetFunction.Len(Range(rCell))-->iLen = WorksheetFunction.Len(rCell)
  • @simoco 地狱,删除 WorksheetFunction。也是。
  • 我以前遇到过这个问题。很烦人!我在没有 vba 的情况下解决了它:如果您选择了您想要的区域,请在不在查找框上输入任何内容的情况下查找所有内容,然后按 Ctrl+A 找到找到的单元格,然后点击删除,删除所有空字符(它对我有用我为 excel 2010 描述了它)。

标签: vba excel


【解决方案1】:

你很亲密:

Sub NoNull()
Dim rCell As Range
Dim iLen As Integer
For Each rCell In Selection
    iLen = Len(rCell)
    If iLen = 0 Then rCell.ClearContents
 Next rCell
End Sub

【讨论】:

    【解决方案2】:

    如果单元格确实是空白的,那么您可以使用SpecialCells 一次性完成此操作

    如果单元格可能包含计算为零长度字符串的公式,则可以通过关闭 ScreenUpdating 并删除多余的 iLen = Len(rCell)) 来改进原始循​​环

    对于空单元格

    Sub NoNull()
    On Error Resume Next
    Selection.SpecialCells(xlBlanks).ClearContents
    End Sub
    

    更好的循环代码

    Sub NoNull()
    Dim rCell As Range
    Application.ScreenUpdating = False
    For Each rCell In Selection
    If Len(rCell.Value) = 0 Then rCell.ClearContents
    Next rCell
    Application.ScreenUpdating = True
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2017-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多