ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5522|回复: 6

[求助] [求助]在EXCLE中保留条件格式的结果,但要删除条件格式?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-1-2 11:27 | 显示全部楼层 |阅读模式

我用条件格式选择分数小于60的单元格,并定义单元格的图案为黄色.现在要删除条件格式,但保留条件格式选择的结果,就是分数小于60的单元格的图案为黄色.

TA的精华主题

TA的得分主题

发表于 2008-1-2 11:38 | 显示全部楼层

编辑>>定位>>定位条件>>条件格式>>格式>>单元格格式>>黄色>>删除条件格式

OK?

[此贴子已经被作者于2008-1-2 11:39:23编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-1-2 15:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

由于用条件格式选择小于60分的单元格时,大于60分的单元格也被条件格式选择过,只不过由于分数大于60,单元格的格式不变,但在定位时,这些单元格也会被定位,所以在"单元格格式>>黄色>>"时,所有的单元格都会变黄色.

TA的精华主题

TA的得分主题

发表于 2009-4-2 15:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
將Excel條件格式所改變的格式(Font,Interior,Borders)保留給單元格(條件公式刪除,格式仍保留)
'以下宏可判定Excel選定範圍內單元格條件格式並將其格式保留給單元格(將條件格式公式刪除,格式依然保留)
'***********************************************************************************************
Sub Translate_Formatconditions_Celltype()
Set range0 = Application.Intersect(Selection, ActiveCell.SpecialCells(xlCellTypeAllFormatConditions))
If range0 Is Nothing Then Exit Sub

Application.ScreenUpdating = False
Dim jd(8)      'set this for 8 FormatConditionOperator
jd(1) = "=And(cell0>=for1,cell0<=for2)"    'Between
jd(2) = "=Not(And(cell0>=for1,cell0<=for2))"       'notBetween
jd(3) = "=cell0=for1"               '=
jd(4) = "=cell0<>for1"              '<>
jd(5) = "=cell0>for1"               '>
jd(6) = "=cell0<for1"               '<
jd(7) = "=cell0>=for1"              '>=
jd(8) = "=cell0<=for1"              '<=

For Each sel0 In range0
n = sel0.FormatConditions.Count
  con = 0
  For i = n To 1 Step -1
  With sel0
  sel0.Select 'use this to avoid formula wrong answer with row() or column()
'****.FormatConditions(i).Type: xlCellValue
  If .FormatConditions(i).Type = 1 Then
    s0 = sel0.Value2
    operator0 = .FormatConditions(i).Operator
    a0 = Application.Evaluate(.FormatConditions(i).Formula1)
    If operator0 = 1 Or operator0 = 2 Then
    b0 = Application.Evaluate(.FormatConditions(i).Formula2)
    If Not (IsNumeric(s0)) Or Not (IsNumeric(a0)) Or Not (IsNumeric(b0)) Then
      If IsEmpty(s0) Then s0 = ""
      If IsNumeric(s0) Then s0 = CStr(s0)
      If IsEmpty(a0) Then a0 = ""
      If IsNumeric(a0) Then a0 = CStr(a0)
      If IsEmpty(b0) Then b0 = ""
      If IsNumeric(b0) Then b0 = CStr(b0)
      Else
      If IsEmpty(s0) Then s0 = 0
      If IsEmpty(a0) Then a0 = 0
      If IsEmpty(b0) Then b0 = 0
    End If

      If a0 > b0 Then
       a1 = b0
       b1 = a0
      Else
       a1 = a0
       b1 = b0
      End If
    Else
      a1 = a0
    End If
       If Application.WorksheetFunction.IsText(s0) Then s0 = """" & UCase(s0) & """"
      If Application.WorksheetFunction.IsText(a1) Then a1 = """" & UCase(a1) & """"
      If Application.WorksheetFunction.IsText(b1) Then b1 = """" & UCase(b1) & """"
      st0 = jd(operator0)
      st = Replace(st0, "for1", a1)
      st = Replace(st, "for2", b1)
      st = Replace(st, "cell0", s0)
      If Application.WorksheetFunction.IsError(Application.Evaluate(st)) Then
        ans = False
      Else
       ans = Application.Evaluate(st)
      End If
'****.FormatConditions(i).Type:xlExpression
    Else
      If Application.WorksheetFunction.IsError(Application.Evaluate(.FormatConditions(i).Formula1)) Then
        ans = False
      Else
       ans = Application.Evaluate(.FormatConditions(i).Formula1)
      End If
    End If
  End With
  If ans = True Then con = i
  Next
'***translate celltype(Font&Interior&Borders)
If con > 0 Then
  Set s1 = sel0.FormatConditions(con).Font
  Set s2 = sel0.FormatConditions(con).Interior
  With sel0.Font
    .Bold = s1.Bold
    .Italic = s1.Italic
    .Underline = s1.Underline
    .Strikethrough = s1.Strikethrough
    .ColorIndex = s1.ColorIndex
  End With
  sel0.Interior.Pattern = s2.Pattern
  sel0.Interior.ColorIndex = s2.ColorIndex
   
  For b0 = 1 To 4
   If sel0.FormatConditions(con).Borders(b0).LineStyle <> xlNone Then
      sel0.Borders(b0).LineStyle = sel0.FormatConditions(con).Borders(b0).LineStyle
      sel0.Borders(b0).Weight = sel0.FormatConditions(con).Borders(b0).Weight
      sel0.Borders(b0).ColorIndex = sel0.FormatConditions(con).Borders(b0).ColorIndex
   End If
  Next
End If

sel0.FormatConditions.Delete
Next
Application.ScreenUpdating = True
End Sub

[ 本帖最后由 single_star 于 2009-7-23 16:23 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-7-7 10:58 | 显示全部楼层
学习了,很管用,尽管看不懂……

TA的精华主题

TA的得分主题

发表于 2021-9-16 11:30 | 显示全部楼层
single_star 发表于 2009-4-2 15:31
將Excel條件格式所改變的格式(Font,Interior,Borders)保留給單元格(條件公式刪除,格式仍保留)
'以下宏可判 ...

麻烦问下:显示下标越界是什么情况啊?

TA的精华主题

TA的得分主题

发表于 2021-9-16 14:43 | 显示全部楼层
h5519306 发表于 2008-1-2 11:38
编辑&gt;&gt;定位&gt;&gt;定位条件&gt;&gt;条件格式&gt;&gt;格式&gt;&gt;单元格格式&gt;&gt;黄色&gt;&gt;删除条件格式OK?
...

这是什么操作,还可以这样?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-15 18:02 , Processed in 0.021529 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表