【问题标题】:VBA Check max Length of cells in a columnVBA检查列中单元格的最大长度
【发布时间】:2017-08-25 20:28:07
【问题描述】:

我尝试编写 VBA 代码来检查某个范围内所有单元格的长度是否保持在 25 个字符以下。

如果任何单元格的字符数超过 25 个,则需要弹出一个带有单元格名称的 msgbox。

例如范围 = A1:A10

如果单元格 A3 有 27 个字符,则需要弹出一个消息框,说明“单元格 A3”

你们中的任何人都可以帮助我吗?

【问题讨论】:

  • 到目前为止你尝试过什么?如果 Cell A3 有 27 个字符但 Cell A5 有 30 个字符,会发生什么情况?你只想要第一个错误吗?或者您是否希望将它们合并为一个 MsgBox,或者您是否应该为每个错误设置一个单独的 MsgBox。期望的行为是什么?
  • 对 VBA 编码来说还是很新的,所以尝试了很多并在网上四处查看,但没有解决我的问题(甚至远程工作..)如果存在多个错误,如果可以的话,那就太好了在同一个消息框中提到。
  • @ErikSlui 请理解,人们在这里帮助您处理您的代码。他们不是来为你编写代码的。因此,您需要edit您的问题并添加您尝试过的代码,并告诉我们您在哪里卡住或哪里出错了。因此,任何人都可以向您展示您做错了什么以及如何在您的代码中更正它。

标签: excel vba


【解决方案1】:

这实际上就是您所要求的。这是一个非常简单的循环。但是,它会在包含大量超过 25 的值的大型数据集上困扰您的屏幕

Sub TestCellLengths()
    Dim c As Range

    For Each c In Range("A1:A10")
        If Len(c) > 25 Then MsgBox "Cell " & c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
    Next c
End Sub

我建议只显示一个MsgBox

Sub TestCellLengths()
    Dim c As Range
    Dim Msg As String

    For Each c In Range("A1:A10")
        If Len(c) > 25 Then Msg = Msg & vbTab & c.Address(RowAbsolute:=False, ColumnAbsolute:=False) & vbNewLine
    Next c

    If Len(Msg) > 0 Then MsgBox "Cells:" & vbNewLine & Msg
End Sub

【讨论】:

  • 您可以声明Dim c As Range,因此无需在此处使用'evil'变体;)另一个优点:您可以在c上使用智能感知。跨度>
猜你喜欢
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多