gpt4 book ai didi

VBA检查给定范围内是否有任何单元格不为空白

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

我有以下代码,当特定工作表为空时,在保存工作簿之前会发出提示。

代码目的:检查主工作表中下拉菜单的值是否为"is",如果"is",检查特定工作表上的给定范围是否为空白。如果"is",则发出提示并将主表上的下拉值更改为“否”。

关注:For loop在代码中将检查给定范围内的任何单元格是否为空,相反,我想要一个代码来检查给定范围内的任何一个单元格中是否有条目。假设给定范围是 E10:G19 ,如果我们在 E10 中有一个条目,它应该从代码中出来,不应该抛出提示,并且只有在给定范围内的所有单元格都为空时才应该抛出。

问题:我的 For loop 应该用什么代替?这可以达到我的目的吗?

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim ws As Worksheet

Dim Rvalue As Range
Dim cell As Range
Set Rvalue = Sheets("Uni-corp").Range("E10:G19")

If Worksheets("Main").Range("E29").Value = "YES" Then
For Each cell In Rvalue
If IsEmpty(cell) Then
bOk = True
Exit For
Else: bOk = False
End If
Next

If bOk Then
If MsgBox("Sheet is blank", vbOKCancel + vbInformation) = vbOK Then
Worksheets("Main").Range("E29").Value = "NO"
Cancel = True
End If
End If
End If
End Sub

最佳答案

干得好:

Option Explicit

Public Function b_is_range_empty(my_rng As Range)

If Application.WorksheetFunction.CountA(my_rng) > 0 Then
b_is_range_empty = False
Else
b_is_range_empty = True
End If

End Function

Public Sub TestMe()

Debug.Print b_is_range_empty(Selection)

End Sub

这个想法是使用 Excel 中的内置公式 - CountA。它针对更快的搜索进行了优化。在测试中,它适用于选择区域。

编辑:
取而代之的是:
For Each cell In Rvalue
If IsEmpty(cell) Then
bOk = True
Exit For
Else: bOk = False
End If
Next

简单地写这个: bOK = b_is_range_empty(Rvalue)

关于VBA检查给定范围内是否有任何单元格不为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40607710/

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