【问题标题】:Excel: How to check if a cell is empty with VBA? [duplicate]Excel:如何使用 VBA 检查单元格是否为空? [复制]
【发布时间】:2023-03-05 04:11:01
【问题描述】:

如何通过 VBA 检查一个单元格是否为空单元格并包含特定信息?

例如:

如果 A:A = "product special" 且 B:B 为 null 则

C1 = "产品特价"

此外,如何在Range 上使用For Each 循环以及如何返回另一个单元格中的值?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可以像这样使用IsEmpty() 函数:

    ...
    Set rRng = Sheet1.Range("A10")
    If IsEmpty(rRng.Value) Then ...
    

    你也可以使用以下:

    If ActiveCell.Value = vbNullString Then ...
    

    【讨论】:

    • 你给 IsEmpty() 范围而不是值。它返回真或假,因此您需要一个“if”语句。你需要写: If IsEmpty(rRng) then ... 我正在编辑和更正答案
    • 请注意,If ActiveCell.Value = vbNullString 将在单元格包含诸如 #N/A! 之类的错误时失败。最好使用 IsEmpty(rRang)
    • @pashute 我已经提交了对此答案的编辑,以包含你们两个提到的信息。
    【解决方案2】:

    IsEmpty() 是最快的检查方式。

    IsNull() 似乎是一个类似的解决方案,但请记住必须将 Null 分配给单元格;它不是在单元格中固有地创建的。

    另外,您可以通过以下方式检查单元格:

    count()

    counta()

    Len(range("BCell").Value) = 0

    【讨论】:

      【解决方案3】:

      This站点使用isEmpty()的方法。

      编辑:从网站抓取的内容,在 URL 无效之前。

      Worksheets("Sheet1").Range("A1").Sort _
          key1:=Worksheets("Sheet1").Range("A1")
      Set currentCell = Worksheets("Sheet1").Range("A1")
      Do While Not IsEmpty(currentCell)
          Set nextCell = currentCell.Offset(1, 0)
          If nextCell.Value = currentCell.Value Then
              currentCell.EntireRow.Delete
          End If
          Set currentCell = nextCell
      Loop
      

      在第一步中,Sheet1 的第一列中的数据将被排序。 在第二步中,将删除所有具有相同数据的行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 2013-06-08
        • 1970-01-01
        相关资源
        最近更新 更多