Excel精英培训网

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

[已解决]求各位大神帮我分析下这种要求如何实现:

[复制链接]
发表于 2015-7-28 14:35 | 显示全部楼层 |阅读模式
本帖最后由 chulia_wong 于 2015-7-29 20:35 编辑

有一列单元格,里面会不时的有数据出现,当出现时所对应的右边的控件显示,否则隐藏:怎么实现在此先谢谢大家:
最佳答案
2015-7-29 09:48
Sub 测试()
    Dim obj As OLEObject
    For i = 6 To 35
        Set obj = Me.OLEObjects("CheckBox" & i - 5)
        If Len(Cells(i, "AP")) = 0 Then
            For j = i To 35
                Set obj = Me.OLEObjects("CheckBox" & j - 5)
                obj.Visible = False
            Next
            Exit For
        Else
            obj.Visible = True
        End If
    Next
End Sub
045.jpg

隐藏与显示控件.rar

17.75 KB, 下载次数: 6

发表于 2015-7-28 15:19 | 显示全部楼层
  1. For i = 1 To 30
  2.     ActiveSheet.OLEObjects("checkbox" & i).Visible = (Trim(Cells(i + 5, "AP")) <> "")
  3. Next
复制代码
回复

使用道具 举报

发表于 2015-7-28 15:24 | 显示全部楼层
  1. Sub 测试()
  2.     Dim obj As OLEObject
  3.     For i = 6 To 35
  4.         Set obj = Me.OLEObjects("CheckBox" & i - 5)
  5.         If Len(Cells(i, "AP")) = 0 Then obj.Visible = False Else obj.Visible = True
  6.     Next
  7. End Sub
复制代码
回复

使用道具 举报

发表于 2015-7-28 15:25 | 显示全部楼层
好在你的控件序号和行号很规律,所以比较简单。

隐藏与显示控件.rar

29.64 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2015-7-28 15:26 | 显示全部楼层
gufengaoyue 发表于 2015-7-28 15:19

我才知道什么叫高手。太谢谢了。
回复

使用道具 举报

 楼主| 发表于 2015-7-28 15:27 | 显示全部楼层
grf1973 发表于 2015-7-28 15:25
好在你的控件序号和行号很规律,所以比较简单。

谢谢。感激不尽!
回复

使用道具 举报

 楼主| 发表于 2015-7-28 16:57 | 显示全部楼层
grf1973 发表于 2015-7-28 15:25
好在你的控件序号和行号很规律,所以比较简单。

grf1973:
测试了代码可以用,只是我想强调的是:AP6列单元格里面的内容它是从上到下“顺序”产生的,而当前的代码是全部检测一遍,这样运行速度上有些慢了点儿。求好人做到底,再次帮忙修改一下下。让其检测到有一个空单元格时就停止循环,后面的全部隐藏!
回复

使用道具 举报

发表于 2015-7-28 18:26 | 显示全部楼层
那就用这样的吧。
改变单元格值的时候,才显示或隐藏。

隐藏与显示控件.rar

32.25 KB, 下载次数: 1

回复

使用道具 举报

发表于 2015-7-29 09:43 | 显示全部楼层
If Len(Cells(i, "AP")) = 0 Then obj.Visible = False:exit for Else obj.Visible = True
回复

使用道具 举报

发表于 2015-7-29 09:48 | 显示全部楼层    本楼为最佳答案   
Sub 测试()
    Dim obj As OLEObject
    For i = 6 To 35
        Set obj = Me.OLEObjects("CheckBox" & i - 5)
        If Len(Cells(i, "AP")) = 0 Then
            For j = i To 35
                Set obj = Me.OLEObjects("CheckBox" & j - 5)
                obj.Visible = False
            Next
            Exit For
        Else
            obj.Visible = True
        End If
    Next
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 20:37 , Processed in 0.826139 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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