首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

另开贴,请教怎么实现这样的功能

2012-03-07 
另开贴,请问如何实现这样的功能excel中第1、2列为日期,要求第二列的日期减第一列的日期后,假如相差n个月(以

另开贴,请问如何实现这样的功能
excel中第1、2列为日期,要求第二列的日期减第一列的日期后,假如相差n个月(以月份作为基数),则从第二列开始向后移动n列)颜色变为红色并写上“下一次”的字样,代码如下


Sub test() 
  Dim lRow As Long, lRowCount As Long 
  lRowCount = Cells(Rows.Count, 1).End(xlUp).Row 
  dim rowIndex as integer 
  For lRow = 1 To lRowCount 
  If Cells(lRow, 2) - Cells(lRow, 1) < 90 Then 
  Cells(lRow, 4).Interior.Color = vbRed  
  rowIndex =Month(Cells(lRow, 2) - Cells(lRow, 1)) 
  Cells(lRow, 2).Offset(0, rowIndex ).Interior.Color = vbRed 
  Cells(lRow, 2).Offset(0, rowIndex ).Value = "下一次" 

  End If 
  Next lRow 
End Sub



需实现的功能:
在人工修改了列的时间后,再次打开excel文件,这时按照新时间的计算,单元格(红色)的位置也发生了变化,但上一次的单元格(红色)如何清除,确保这一行中只有一个单元格是红色的

[解决办法]
简单点 Color = vbRed之前 把所有颜色清空
[解决办法]

探讨
简单点 Color = vbRed之前 把所有颜色清空

[解决办法]
VB code
Private Sub test()    Dim lRow As Long, lRowCount As Long    lRowCount = Cells(Rows.Count, 1).End(xlUp).row    Cells.Interior.ColorIndex = xlNone    Dim rowIndex As Integer    For lRow = 2 To lRowCount        rowIndex = 12 * (Year(Cells(lRow, 2)) - Year(Cells(lRow, 1))) _            + Month(Cells(lRow, 2)) - Month(Cells(lRow, 1))                Range(Cells(lRow, 3), Cells(lRow, 256)).Clear        Range(Cells(lRow, 3), Cells(lRow, 256)).Interior.Color = xlNone        Cells(lRow, 2).Offset(0, rowIndex).Interior.Color = vbRed        Cells(lRow, 2).Offset(0, rowIndex).Value = "下一次"            Next lRowEnd Sub 

热点排行