VBA如何实现监控单元格的更新时间、点击按钮生成打印报表
Private Sub Worksheet_Change(ByVal Target As Range)Dim CurRow As Long
Dim CurColumn As Long
Dim FinalRow As Long
Dim TempRow As Long
CurRow = Target.Row '得到当前行
CurColumn = Target.Column '得到当前列
FinalRow = Worksheets("sheet1").Cells.SpecialCells(xlCellTypeLastCell).Row '得到最后一行
Application.EnableEvents = False '禁止发生重复中断
Application.ScreenUpdating = False '禁止屏幕更新
If CurRow > 6 And (CurColumn > 6 And CurColumn < 11) Then '如果G:J列满足对应的列要求
Worksheets("sheet1").Cells(CurRow, 13) = Now '则在对应的M列填写当前的系统日期和时间
Else
Application.ScreenUpdating = True '允许屏幕更新
Application.EnableEvents = True '允许再次发生中断
Exit Sub
End If
For TempRow = 7 To FinalRow Step 1 '从第 7行开始到最后一行进行检查
If Worksheets("sheet1").Cells(TempRow, 13)Empty Then '如果当前行的M列不为空
If Int(Worksheets("sheet1").Cells(TempRow, 13))Date Then '且当前行的M列日期不等于当前的系统日期
Worksheets("sheet1").Cells(TempRow, 13).Interior.ColorIndex = xlColorIndexNone '去掉背景色
Else '否则, 即等于当前系统日期
Worksheets("sheet1").Cells(TempRow, 13).Interior.ColorIndex = 3 '将对应的E列背景色改为红色
End If
End If
Next TempRow
Application.ScreenUpdating = True '允许屏幕更新
Application.EnableEvents = True '允许再次发生中断
End Sub
'我希望实现的是:
'1、当我更新G:J列并>6行 (如果控制在6行时,N列才能自动记录我的更新的时间,并用粉红色突出显示最近一天的所有更新记录...
' 偶数列20 22 24 ...递增不写了...172(就是我隐藏了的列),这些列有公式是变量,每天都要计算需求数量,所以我不希望N列记录它们的更新时间....
'
'3、下面的程序能否实现第2个要求? 如果可以,怎么合并上下两个程序?如果没什么用那就不用管它了...
'
'4、我想分别在M5和N5两个位置设两个按钮,这两个按钮功能是一样,只是一个是控制M列的,另一个是控制N列,要实现下面的功能这两个按钮会不会有冲突...
' 需要实现:只显示最近更新的(?)天的行,其它行隐藏,这里的问号(?)代表的是可选,
' 例如:像用微调按钮调整到5天,就只显示最近5天内更新过的行,其它行隐藏...
' 或者是象选择日期时间表(附图)一样选择到某一天,那就只显示某一天到今天有过更新的行,其它行隐藏...
'
'5、K3这位置有个按钮“点击生成打印报表”,我觉得这个按钮挺好的,可是我们领导说这个按钮还没有达到他希望的要求.........
' 这个按钮一般都是最后按的,都在产生需求数量后点一下,他希望点击这个按钮后实现: _
5.1、按O列筛选并>6行以下的,只显示需求数量>0的行,其它行隐藏 _
5.2、再复制整个工作表 _
5.3、新建另一个新的工作薄 _
5.4、粘贴,再复制选择性粘贴以数值粘贴,就是为了保留格式,去掉公式 _
5.5、删除所有隐藏了的行,就是O列没有需求数量的行,包括第1和2行,但要保留3、4、5、6行, _
因为这是打印顶端标题行,然后删除6行(如果1、2已删,那这就是第4行)以下所有隐藏了的行 _
(第5.1条和第5.4条是不是可以放在一起执行) _
5.6、删除B:F列(隐藏中)和F,H:I,再删除S:IV列 _
5.7、P4单元格筛选,以降序排列 _
5.8、完成(例如"sheet2"的样子)
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False '关闭屏幕刷新
Dim intRow&, intCol&, i&, MaxTime As Date
intRow = Target.Row '记录行号
intCol = Target.Column '记录列号
'当更新的范围在3行以后,S:FP列之内时执行
If intRow > 6 And (inCol >= 20 And inCol
页:
[1]