Excel 2003 VBA-复制此代码的方法,用于选择行并为其着色
这是一个将数据集从access导出到excel的过程的片段Excel 2003 VBA-复制此代码的方法,用于选择行并为其着色,excel,ms-access,automation,vba,Excel,Ms Access,Automation,Vba,这是一个将数据集从access导出到excel的过程的片段 Dim rs As Recordset 作为整数的Dim intMaxCol Dim intMaxRow作为整数 Dim objxls作为Excel.Application 将objWkb设置为Excel.工作簿 将对象调整为Excel.工作表 Set rs = CurrentDb.OpenRecordset("qryOutput", dbOpenSnapshot) intMaxCol = rs.Fields.Count If rs
Dim rs As Recordset
作为整数的Dim intMaxCol
Dim intMaxRow作为整数
Dim objxls作为Excel.Application
将objWkb设置为Excel.工作簿
将对象调整为Excel.工作表
Set rs = CurrentDb.OpenRecordset("qryOutput", dbOpenSnapshot)
intMaxCol = rs.Fields.Count
If rs.RecordCount > 0 Then
rs.MoveLast: rs.MoveFirst
intMaxRow = rs.RecordCount
Set objxls = New Excel.Application
objxls.Visible = True
With objxls
Set objWkb = .Workbooks.Add
Set objSht = objWkb.Worksheets(1)
With objSht
On Error Resume Next
.Range(.Cells(1, 1), .Cells(intMaxRow, intMaxCol)).CopyFromRecordset rs
.Name = conSHT_NAME
.Cells.WrapText = False
.Cells.EntireColumn.AutoFit
.Cells.RowHeight = 17
.Cells.Select
With Selection.Font
.Name = "Calibri"
.Size = 10
End With
.Rows("1:1").Select
With Selection
.Insert Shift:=xlDown
End With
.Rows("1:1").Interior.ColorIndex = 15
.Rows("1:1").RowHeight = 30
.Rows("2:2").Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
.Rows("4:4").Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
.Rows("6:6").Select
With Selection.Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
.Rows("1:1").Select
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
End With
End With
End If
Set objSht = Nothing
Set objWkb = Nothing
Set objxls = Nothing
Set rs = Nothing
Set DB = Nothing
End Sub
看看我在哪里看着色的行。我想每隔一行选择并填充(任何颜色),有点像一些访问报告。我可以手动编码每一行,但有两个问题:1)这很痛苦2)我不知道记录数是多少
在合并recordcount以了解要“循环通过”的行数的同时,如何使代码在这方面更高效
编辑:我的另一个问题是关于我在模块中使用的选择方法,是否有更好的excel语法来代替这些选择
.Cells.Select
With Selection.Font
.Name = "Calibri"
.Size = 10
End With
这是我找出如何完成这段代码的唯一方法,但实际上每隔一次我运行这段代码时,它就会失败。它说没有对象并每隔一段时间指向.font?这是因为代码很差,还是因为我没有在代码中关闭xls应用程序?如果是,我该怎么做
一如既往地谢谢你 使用条件格式。这里有一小段你的代码被重写了
On Error Resume Next
With .Range(.Cells(1, 1), .Cells(intMaxRow, intMaxCol))
.CopyFromRecordset rs
.FormatConditions.Add xlExpression, , "=MOD(ROW(),2)=1"
With .FormatConditions(1)
.Interior.Color = vbYellow
End With
End With
你应该在一个新问题中问你的选择问题,但答案是:无论何时你看到。选择,然后选择,你可能不需要选择
With Cells.Font
.Name = "Calibri"
.Size = 10
End With
您不需要为
CopyfromRecordset
选择所有范围,只需选择range(“A1”)。CopyfromRecordset rs
是足够的,就我所见,您可以选择数据而不是所有列
For i = 2 to 6 Step 2
With Range(Cells(1,i),Range(Cells(1,i)).End(xlDown)).Interior
.ColorIndex = 40
.Pattern = xlSolid
End With
Next i
对于第二个问题,@DickKusleika是对的。对不起……我认为他们是关于同一代码的一个问题。谢谢你的帮助