Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3928|回复: 13

[已解决]求大神教我编写个VBA

[复制链接]
发表于 2017-8-6 21:18 | 显示全部楼层 |阅读模式
本帖最后由 釜底抽薪 于 2017-8-7 12:12 编辑

我想在用VBA编写个检查公式,由于大多,列不通,公式也不同, 想你们编写个 我慢慢摸索套用,看能行不 我也是用条件格式录制VBA,还是不行。
     我在条件格式的公式如下  =($D2="")*($I2<>$J2) 用J2:J10000    J1有表头 所以J2开始  如果I2不等于J2,J2就单元格填充成红色  如图

     非常感谢大家 帮我 教我
最佳答案
2017-8-7 13:05
你的意思是不用条件格式,直接VBA标色吗?
  1. Sub aaa()
  2. Dim i&
  3. For i = 2 To [i65536].End(3).Row
  4.   If Cells(i, 4) = "" And Cells(i, 9) <> Cells(i, 10) Then Cells(i, 10).Interior.Color = vbRed
  5. Next i
  6. End Sub
复制代码
无标题.png
发表于 2017-8-7 07:02 | 显示全部楼层
本帖最后由 AmoKat 于 2017-8-8 07:21 编辑

Sub AddFormatConditions()
    Dim xR As Range

    Call DeleteFormatConditions

    Application.Goto Range("J2")
    Set xR = Range("J2:J1000")
    xR.FormatConditions.Add Type:=xlExpression, Formula1:= _
                            "=($D2="""")*($I2<>$J2)"
    xR.FormatConditions(xR.FormatConditions.Count).SetFirstPriority
    With xR.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
    End With
    xR.FormatConditions(1).StopIfTrue = False
End Sub


Sub DelFormatConditions()
    Dim xR As Range
    Application.Goto Range("J2")
    Set xR = Range("J2:J1000")
    n = xR.FormatConditions.Count
    For i = n To 1 Step -1
        xR.FormatConditions(i).Delete
    Next
End Sub

回复

使用道具 举报

 楼主| 发表于 2017-8-7 09:17 | 显示全部楼层

运行不起啊 第一句 提示 语法错误,我还想问下, 我在你编写的代码上 改相应的公式跟单元格  在重复下 可以继续使用不?
回复

使用道具 举报

发表于 2017-8-7 10:53 | 显示全部楼层
没太明白意思,是不是这样,J2条件格式公式=AND(D2="",J2<>I2),格式刷往下刷。
回复

使用道具 举报

 楼主| 发表于 2017-8-7 12:10 | 显示全部楼层
大灰狼1976 发表于 2017-8-7 10:53
没太明白意思,是不是这样,J2条件格式公式=AND(D2="",J2I2),格式刷往下刷。

恩, I列跟J列 都有值,用条件公式就是=AND(D2="",J2<>I2), 然后整个J列所在的数据不等于L列的就 单元格红色填充
无标题.png
回复

使用道具 举报

发表于 2017-8-7 12:39 | 显示全部楼层
那就不用VBA了,直接条件格式就行,还有什么问题吗?
回复

使用道具 举报

 楼主| 发表于 2017-8-7 13:00 | 显示全部楼层
大灰狼1976 发表于 2017-8-7 12:39
那就不用VBA了,直接条件格式就行,还有什么问题吗?

如果只检查一列的话 就条件格式,要检查的东西多,基本一样,所以我想你们编辑个VBA后 我在复制你们编辑的代码 修改条件和对于的区域。
回复

使用道具 举报

发表于 2017-8-7 13:05 | 显示全部楼层    本楼为最佳答案   
你的意思是不用条件格式,直接VBA标色吗?
  1. Sub aaa()
  2. Dim i&
  3. For i = 2 To [i65536].End(3).Row
  4.   If Cells(i, 4) = "" And Cells(i, 9) <> Cells(i, 10) Then Cells(i, 10).Interior.Color = vbRed
  5. Next i
  6. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-8-7 14:03 | 显示全部楼层
大灰狼1976 发表于 2017-8-7 13:05
你的意思是不用条件格式,直接VBA标色吗?

可惜留下联系方式 慢慢教我简单点的吗
回复

使用道具 举报

发表于 2017-8-7 15:47 | 显示全部楼层
这个已经够简单的了啊。
有问题可以发贴,不光是我,论坛高手们都会帮你解答的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 21:36 , Processed in 0.416906 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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