|
这是在ACCESS里的代码,大概需要8秒可以执行完毕:
替换你的代码就可以了:
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As New Excel.Worksheet
Dim Rs As New ADODB.Recordset, conn
Dim i As Integer, j As Integer, n As Integer
Dim mydb As ADODB.Connection, c2, SQL As String
Dim TargetR, stime
Set mydb = CurrentProject.Connection
stime = Timer
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(CurrentProject.Path & "\计划.xlt")
Set xlSheet = xlBook.Worksheets(1)
Set conn = CurrentProject.Connection
xlApp.ScreenUpdating = False
With xlSheet
Set TargetR = .Range("A1:AG300")
For n = 1 To 33
For i = 1 To 330
'MsgBox TargetR(i, n)
If IsDate(TargetR(i, n)) = True Then
If Nz(DCount("[日期]", "Tb_工厂日历", "[日期]=#" & TargetR(i, n) & "# AND [是否休息]=-1"), 0) > 0 Then
.Cells(i, n).Font.ColorIndex = 3 '符合条件的用红色字体表示
ElseIf Weekday(TargetR(i, n)) = 7 Then
.Cells(i, n).Interior.ColorIndex = 15 '星期日用灰色底纹表示
Else
.Cells(i, n).Interior.ColorIndex = 2
End If
End If
Next i
Next n
xlApp.ScreenUpdating = True
End With
xlApp.Visible = True
'MsgBox Round(Timer - stime, 2)
|
|