|
楼主 |
发表于 2024-4-4 08:04
|
显示全部楼层
用文心生成的代码,粘贴到编辑器中, With conditionRange.Columns(i).FormatConditions.Add(Type:=xlExpression, Formula1:="=" & Cells(1, columnOffset).Address & "<>"" & Char(65 + i - 1) & """")这段是红色的字体,无法测试
Sub SetConditionalFormatting()
Dim selectedRange As Range
Dim firstColumn As Integer
Dim selectedColumns As Integer
Dim columnOffset As Integer
Dim conditionRange As Range
Dim condition As FormatCondition
Dim i As Integer
' 显示“请选择区域”对话框,并获取用户选择的区域
On Error Resume Next ' 如果用户取消选择,则忽略错误
Set selectedRange = Application.InputBox("请选择区域", Type:=8) ' Type 8 表示区域类型
On Error GoTo 0 ' 恢复正常错误处理
' 如果用户没有选择任何区域或取消了选择,则退出程序
If selectedRange Is Nothing Then
MsgBox "未选择任何区域,程序退出。"
Exit Sub
End If
' 获取选中区域最左边的列号
firstColumn = selectedRange.Columns(1).Column
' 获取选中区域的列数
selectedColumns = selectedRange.Columns.Count
' 判断选中区域最左边的列与A列之间列的数量是否小于选中区域的列数
If firstColumn - 1 < selectedColumns Then
MsgBox "列的数量多了"
Exit Sub
End If
' 设置条件格式的区域,从选中区域的顶端的行号到5000行
Set conditionRange = Range(selectedRange.Cells(1, 1).Address & ":" & Cells(5000, selectedRange.Columns.Count).Address)
' 清除原有条件格式,如果不需要请注释掉以下两行
'conditionRange.ClearFormats
'conditionRange.FormatConditions.Delete
' 为每一列添加条件格式
For i = 1 To selectedColumns
columnOffset = firstColumn + i - 1 ' 转换为实际的列号
' 添加条件格式
With conditionRange.Columns(i).FormatConditions.Add(Type:=xlExpression, Formula1:="=" & Cells(1, columnOffset).Address & "<>"" & Char(65 + i - 1) & """")
.SetFirstPriority ' 确保条件格式排列在第一位
With .Font
.Color = RGB(255, 255, 255) ' 白色
End With
.Interior.Color = RGB(255, 0, 0) ' 红色
End With
Next i
MsgBox "条件格式设置完成。"
End Sub
|
|