gpt4 book ai didi

VBA 检查列中的空单元格并打印值

转载 作者:行者123 更新时间:2023-12-04 21:34:34 26 4
gpt4 key购买 nike

在 J 列中,有空行和具有诸如已选中值的行。

我试图编写 VBA 代码,在有一个空单元格的地方打印“未选中”并且这可以工作,但是当它碰到一个具有值(选中)的单元格时,它会停止。它不会进入下一个单元格,可能是因为我在单元格中有公式,如果没有填满,它不会打印任何内容,但它仍然包含该公式。在我的情况下,我在 J7 之前有空单元格,然后在 J15 再次开始。但对于源数据,这可能会不时改变。

我想这样做的原因是因为我在 J 列中有一个公式已经打印了一些值,然后是一些 VBA 代码检查不同列中的其他值并打印到 J 列。J 列是过滤器主列之类的。所以我猜这就是我必须这样做的方式。

我现在的代码是,

Sub DoIfNotEmpty()
Dim ra As Range, re As Range

With ThisWorkbook.Worksheets("Sheet1")
Set ra = .Range("J:j25")
For Each re In ra
If IsEmpty(re.Value) Then
re.Value = "unchecked"
End If
Next re
End With
End Sub

如果单元格包含在这种情况下具有 if 的公式,我可以打印到空单元格吗?声明没有填写?

最佳答案

除了@Maxime Porté 指出它应该是 .Range("J1:j25") .我猜这些单元格看起来只是空的,但它们不是。

包含空字符串 "" 的单元格, 不再是空的,但看起来像。你可以像这样测试它:

  • 在新的工作表 A1 中写入:="" (中间没有空格!)
  • 复制 A1 和 A1 中的特殊粘贴值。 A1 现在看起来是空的。
  • 运行Debug.Print IsEmpty(Range("A1").Value)在 VBA 中,你会得到一个 FALSE .

  • 单元格 A1 不再为空,因为它包含一个空字符串。

    你能做什么?
    Sub DoIfNotEmpty()
    Dim ra As Range, re As Range

    With ThisWorkbook.Worksheets("Sheet1")
    Set ra = .Range("J1:J25")
    For Each re In ra
    If IsEmpty(re.Value) or re.Value = vbNullString Then
    re.Value = "unchecked"
    End If
    Next re
    End With
    End Sub

    这也会将伪空单元格标记为“未选中”。但请注意,它还会杀死导致空字符串 "" 的公式。 .

    关于VBA 检查列中的空单元格并打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549374/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com