【发布时间】:2019-12-07 22:25:49
【问题描述】:
我有一个 7 列的 excel 表格,用户可以放置他们的输入。放置输入后,他们有一个验证宏要运行,它将具有无效值的单元格着色为红色。我想在使用 VBA 宏着色后创建一个关于这些错误的摘要表,但前提是表中有任何彩色单元格。 如果表格范围内的某处至少有一个红色单元格,则应创建此摘要表,否则应弹出一个 MsgBox,告知没有错误。我想创建最简单的方法来做到这一点,如下所示: 问题是我收到了“发现验证错误,请检查错误表”消息,即使我没有红色单元格。
Sub errorListCreation(Sheet1 As Worksheet)
Dim isColored As Boolean
isColored = False
For Each Acell In Sheet1.Range("A2", Range("K" & Sheet1.usedRange.Rows.Count))
With Acell
If Acell.DisplayFormat.Interior.Color = RGB(255, 0, 0) Then
isColored = True
Exit For
End If
End With
Next Acell
If isColored = True Then
MsgBox "Validation errors found, please check the Errors sheet. "
For Each errorList In Worksheets
If errorList.Name = "Errors" Then
Application.DisplayAlerts = False
Sheets("Errors").Delete
Application.DisplayAlerts = True
End If
Next
Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Errors"
Else: MsgBox "Validation complete, please check the reconciliation sheet."
End If
End Sub
【问题讨论】:
-
有什么问题?你的问题到底是什么?
-
问题是有没有其他方法可以做到这一点?因为我的解决方案不起作用。
-
“不工作”不是有用的错误描述。你能说出你得到哪个错误以及在哪一行?或者您的代码与您的预期相比是什么?那会帮助我们。表格的屏幕截图也可以帮助理解实际问题。
-
使用阴影等格式为单元格分配第二个值是一种反模式。相反,创建另一个包含该值的列并使用条件格式来反映它。
标签: excel vba for-loop do-while