分享

Excel让选定单元格所在行和列颜色突出高亮显示

 昵称7665211 2014-01-12

Excel让选定单元格所在行和列颜色突出高亮显示


当工作表里面的数据量大的时候,鼠标选定当前单元格后,要想弄清楚它对应的行和列实在是不方便。如果能做到excel自动以高亮突出颜色的方式来显示当前行和列的话,那该多方便啊,哈哈。其实excel中可以做到这个效果的,方法有两种:条件格式和vba。

使用条件格式

下面将使用条件格式实现当前单元格和当前单元所在行或列突出显示的效果。

在公式中使用了cell函数,并将screenupdation属性的值设置为true以实现屏幕更新。

在thisworkbook模块中输入如下代码: private sub workbook_sheetselectionchange(byval sh as object, byval target as range) application.screenupdating = true end sub 当然,如果只想在工作表中实现突出显示的效果,将application.screenupdating = true代码输入到worksheet_selectionchange事件中。

接下来,在excel中选择菜单“格式——条件格式”命令,弹出“条件格式”对话框。

在“条件”下拉框中选择“公式”并在右侧中输入下面相应的公式,然后点击“格式”按钮,设置相应的格式,完成后,按“确定”按钮。

下面是相应的公式及其作用: (1)公式“=cell("address")=address(row(),column())”,突出活动单元格,如下图1所示。

 

图1

(2)公式“=cell("row")=row()”,突出单元格所在行,如下图2所示。

 

图2

(3)下面的公式突出到当前单元格为止的相应行和列,呈反l形,如下图3所示。 “=or(and(cell("row")=row(),cell("col")+1>column()),and(cell("col")=column(),cell("row")+1>row()))”

 

图3

(4)在“条件格式”对话框中对所选单元格区域设置两个如下所列的公式条件,将呈反l形突出显示到当前单元格为止的相应行和列,且当前单元格背景色改变、字体加粗显示,如下图4所示。 “=cell("address")=address(row(),column())” “=or(and(cell("row")=row(),cell("col")+1>column()),and(cell("col")=column(),cell("row")+1>row()))”

  图4  示例文档见 使用条件格式自动突出显示.xls。

使用vba代码
(1) 突出显示至当前单元格所在的行和列,呈反l形。在需要设置此功能的工作表模块中输入下面的代码:
private sub worksheet_selectionchange(byval target as range)
  dim icolor as integer
  '注:如果工作表中有想要保留的条件格式,则不要使用本程序
  '忽略用户选择单元格区域时可能产生的错误
  on error resume next
  icolor = target.interior.colorindex
  if icolor < 0 then
    icolor = 36
  else
    icolor = icolor + 1
  end if
  '避免字体颜色与突出色相同
  if icolor = target.font.colorindex then icolor = icolor + 1
  cells.formatconditions.delete
  '水平突出色
  with range("a" & target.row, target.address)
    .formatconditions.add type:=2, formula1:="true"
    .formatconditions(1).interior.colorindex = icolor
  end with
  '垂直突出色
  with range(target.offset(1 - target.row, 0).address & ":" & _
    target.offset(-1, 0).address)
    .formatconditions.add type:=2, formula1:="true"
    .formatconditions(1).interior.colorindex = icolor
  end with
end sub
注意,此代码运行后,将清除所在工作表中含有的条件格式。示例文档见 用颜色自动突出显示当前单元格行列1.xls。uploadfiles/2006-10/1027319888.rar
(2) 突出显示当前单元格所在的行和列。在需要设置此功能的工作表模块中输入下面的代码:
private sub worksheet_selectionchange(byval target as range)
  '可带条件格式,但不能复制/剪切/粘贴操作
  with target.parent
    .cells.interior.colorindex = 0
    .columns(target.column).cells.interior.colorindex = 35
    .rows(target.row).cells.interior.colorindex = 35
  end with
end sub
注意,此代码运行后,在当前工作表中不能进行复制、剪切和粘贴功能。示例文档见 用颜色自动突出显示当前单元格行列2.xls。uploadfiles/2006-10/1027121529.rar
(3) 突出显示当前单元格所在的行和列。在需要设置此功能的工作表模块中输入下面的代码:
private sub worksheet_change(byval target as range)
  if application.cutcopymode <> false then
    application.cutcopymode = false
    call colorband(target)
  end if
end sub
‘- - - - - - - - - - - - - - - - - - - - -
private sub worksheet_selectionchange(byval target as range)
  if application.cutcopymode = false then
    call colorband(target)
  else
    exit sub
  end if
end sub
‘- - - - - - - - - - - - - - - - - - - - -

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多