当前位置: 代码迷 >> VBA >> 另开贴,请教怎么实现这样的功能
  详细解决方案

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

热度:9824   发布时间:2013-02-26 00:00:00.0
另开贴,请问如何实现这样的功能
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
  相关解决方案