我试图为我的电子表格做一个简单的循环,在其中循环遍历一个范围并检查行是否为空,如果不是,则循环遍历一系列列并检查它们是否为空以及是否为空然后设置一条消息。
问题在于,每次循环时ro.value和col.value都正确更新,但列数和行数不正确,因此无论行或列的空白单元格是多少,我设置的消息始终相同
这是我的代码:
Dim RoRange As range
Dim Ro As range
Dim Col As range
Dim ColRange As range
Set RoRange = Worksheets("Home").range("LineDescs")
Set ColRange = Worksheets("Home").range("F24:N24")
For Each Ro In RoRange.Rows
If Ro.Value <> "" Then
For Each Col In ColRange.Columns
If Col.Value = "" Then
Set_Message ("Cell " & ColRange.Column & ":" & RoRange.Row & " is Empty!")
Exit Sub
End If
Next
End If
Next
“ LineDescs”是我的电子表格中的一个命名范围。 请问您是否需要任何解释的感谢!
答案 0 :(得分:1)
您的消息应引用Ro
和Col
,因为它们是循环中引用的变量。 RoRange
和ColRange
是固定的,因此您的消息将始终相同。
(请注意,要检查一系列单元格的值,您必须遍历每个单元格。)
For Each Ro In RoRange.Rows
If Ro.Value <> "" Then
For Each Col In ColRange.Columns
If Col.Value = "" Then
Set_Message ("Cell " & Col.Column & ":" & Ro.Row & " is Empty!")
Exit Sub
End If
Next
End If
Next
答案 1 :(得分:1)
检查Excel中的整个Row
或整个Column
是否为空,像这样:
Sub TestMe()
Debug.Print Rows(1) = ""
End Sub
抛出Type mismatch (Error 13)
。这正是这里发生的事情:
For Each Ro In RoRange.Rows
If Ro.Value <> "" Then
因此,如果要检查行是否没有任何填写的单元格,则可以执行以下操作:
Sub TestMe()
Dim myCell As Range
Dim myRow As Range
Dim wks As Worksheet: Set wks = Worksheets(1)
With wks
For Each myRow In .Range("A1:B10").Rows
For Each myCell In myRow.Cells
If myCell <> "" Then
.Cells(myCell.Row, 3) = "NOT EMPTY"
.Cells(myCell.Row, 3).Interior.Color = vbCyan
End If
Next myCell
With .Cells(myRow.Row, 3)
If .Value2 <> "NOT EMPTY" Then
.Value2 = "EMPTY"
.Interior.Color = vbRed
End If
End With
Next
End With
End Sub