我意识到我搞砸了第一个问题,所以我最后一次尝试。我从两个单独的工作表中定位相同的4列,这些工作表包含包含文本或不包含文本的单元格。工作表1将自动更新,因此我将每天运行此代码以手动更新工作表2.我试图找到一种方法来基本找出哪些单元格使用宏丢失文本。我尝试使用我在本网站上找到的代码,该代码将边框放在包含文本的单元格上,并清除空单元格的边框。
Sub BorderForNonEmpty()
Dim myRange As Range
Set myRange = Sheet1.Range("C2:C252")
' Clear Existing Borders
myRange.Borders.Linestyle = xlLineStyleNone
' Test Each Cell and Put a Border Around it if it has content
For Each myCell in myRange
If myCell.Text <> "" Then
myCell.BorderAround (xlContinuous)
End If
Next
End Sub
此代码有效,但我想尝试使用与清除边框相反的颜色突出显示空单元格。这也是我第一次在StackOverflow上发帖,所以我事先道歉。谢谢。
答案 0 :(得分:4)
Excel没有循环遍历所有单元格,而是具有内置函数来选择空白单元格。这应该更快,更可靠。
Sub BorderForNonEmpty()
Dim myRange As Range
Set myRange = Sheet1.Range("C2:C252")
'clear all color
myRange.Interior.ColorIndex = xlNone
'color only blank cells
myRange.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 6
End Sub
另一种选择可能只是使用条件格式(另一种内置功能),但是对于更改范围可能很难控制。
答案 1 :(得分:0)
替换
myCell.BorderAround (xlContinuous)
带
myCell.Interior.Color = RGB(100, 100, 100)
答案 2 :(得分:0)
尝试一下:
Sub BorderForNonEmpty()
Dim myRange As Range
Set myRange = Sheet1.Range("C2:C252")
For Each myCell In myRange
If myCell.Text = "" Then
myCell.Interior.ColorIndex = 6
End If
Next
End Sub
修改#1:强>
Sub BorderForNonEmpty()
Dim myRange As Range
Set myRange = Sheet1.Range("C2:C252")
For Each myCell In myRange
If myCell.Text = "" Then
myCell.Interior.ColorIndex = 6
Else
myCell.Interior.ColorIndex = xlNone
End If
Next
End Sub
修改#2:强>
制作宏&#34;可点击&#34;: