在Excel中交替行颜色/数字 – VBA
所以我正在使用Access中的报告工具。 它查询本地表格并创build一个Excel文档(通过VBA)并创build一个Excel文件。
我使用下面的代码来替代代码的颜色,它的作品非常漂亮
For a = 1 To rs.RecordCount With ExcelSheet .Cells(a + 1, 1) = a .Cells(a + 1, 1).EntireRow.Interior.ColorIndex = IIf((a + 1) Mod 2 = 0, 2, 15) End With Next
注意我必须做a + 1
因为a = 1是标题行,那就是标题行。
注意: .Cells(a + 1, 1) = 1
表示行(1,2,3 …)
注: IIf((a + 1) Mod 2 = 0, 2, 15)
2和15是颜色代码。
现在我的问题是,当有人得到Excel报告,他们可能会删除一行,或做一个sorting操作或任何事情,当他们这样做,它弄乱了行。
例如:
1 white row 2 grey row 3 white row 4 grey row
如果我sorting他们我得到
3 white row 1 white row 2 grey row 4 grey row
这不是我想要的,我希望它保持格式和编号任何人都可以在Access中使用VBA来完成这个任务?
Tech:Office 2007
这可以用ROW()
函数和一些条件格式来完成。 ROW()
函数返回它所在单元格的当前行,所以只要单元格被删除,移动或sorting,它就会改变。 条件格式化只要条件发生变化就重新应用,所以移动或sorting行会通知Excel相应地更新颜色。 代码如下所示:
Dim a As Integer Dim oneRow As Range For a = 1 To rs.RecordCount With ExcelSheet ''// show the row number in the first cell .Cells(a + 1, 1).Formula = "=ROW()" ''// set formatting to alternate row colors Set oneRow = .Cells(a + 1, 1).EntireRow oneRow.FormatConditions.Delete oneRow.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(ROW()-1, 2)=0" oneRow.FormatConditions(1).Interior.ColorIndex = 2 oneRow.FormatConditions.Add Type:=xlExpression, Formula1:= _ "=MOD(ROW()-1,2)=1" oneRow.FormatConditions(2).Interior.ColorIndex = 15 End With Next a
@ e.James
Dim rowRange As Range ExcelSheet.Cells(1, 1).EntireColumn.ColumnWidth = 4 ExcelSheet.Cells(1, 1) = "#" Set rowRange = Range("2:2", rs.RecordCount & ":" & rs.RecordCount) rowRange.Select With ExcelApp.Selection .FormatConditions.Delete .FormatConditions.Add xlExpression, Formula1:="=MOD(ROW(),2)" .FormatConditions(1).Interior.ColorIndex = 15 End With
那dosnt工作。 它只是突出显示最上面一行(标题行)灰色。
编辑NEVERMIND它应该是
Set rowRange = ExcelSheet.Range("2:2", rs.RecordCount & ":" & rs.RecordCount)
编辑号码2:你知道我可以如何插入每行使用这种方法的行号?
回答:
ExcelSheet.Cells(1, 1).EntireColumn.ColumnWidth = 4 Set RowRange = Range("2:2", rs.RecordCount & ":" & rs.RecordCount) RowRange.Columns(1).Formula = "=ROW()-1" With RowRange .FormatConditions.Delete .FormatConditions.Add xlExpression, Formula1:="=MOD(ROW(),2)" .FormatConditions(1).Interior.ColorIndex = 15 End With