我无法清除和重置Cell的背景颜色

时间:2013-01-02 09:54:39

标签: excel-vba vbscript vba excel

借助以下命令,我可以清除单元格的内容,但不能清除它们的背景颜色。如何清除和设置范围内单元格的背景颜色?

ob9.Range(ob9.Cells(1,StartCol),ob9.Cells(1,maxcolumn)).ClearContents

修改

我尝试了以下内容:

CountFill = objExcel1.Application.WorksheetFunction.CountA(ob9.Rows(1))
CountBlnk = objExcel1.Application.WorksheetFunction.CountBlank(ob9.Rows(1))
TotalColumn= CountBlnk + CountFill

ob9.Range(ob9.Cells(1,CountFill + 1 ),ob9.Cells(1,TotalColumn)).Interior.ColorIndex(-4142) '= xlColorIndexNone

可以一行完成吗?

由于

2 个答案:

答案 0 :(得分:8)

一切都很好。但是不要选择,因为你正在运行一个巨大的脚本(知道到目前为止你经历了什么)......

with ob9.Range(ob9.Cells(1,StartCol),ob9.Cells(1,maxcolumn))
.Interior.ColorIndex = xlColorIndexNone
.Interior.ColorIndex = 120
End With

如果你直接使用range,你甚至可以删除with阻止,因为它也有一些性能减慢的缺点。

回答你的子问题:

  1. 如何从列号中获取列名?

    Excel column number from column name

  2. 如何根据OP的maxcolumn名称或号码设置范围。

    Range(row,column)

    您提到需要row 1maxcolumn然后您可以使用这两个数据构建单元格。

    MsgBox Sheets(3).Rows(1).Columns(5).Address

    所以试试看:

    MsgBox Sheets(3).Rows(1).Columns(maxcolumn).Address

答案 1 :(得分:2)

你可以尝试

ob9.Range(ob9.Cells(1,StartCol),ob9.Cells(1,maxcolumn)).Select
Selection.Interior.ColorIndex = xlColorIndexNone
Selection.Interior.ColorIndex = xlNone

最后两行中的一行应该有效,但我不确定是哪一行(我没有Excel)。如果你可以尝试两者并报告,那就太好了。

您可以使用以下方式设置颜色:

Selection.Interior.Color = RGB(255,0,0)