ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 程序开发] [50期]在VBA中使用循环批量修改工作表中复选框属性。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-7-28 01:40 | 显示全部楼层 |阅读模式
一、问题提出
对于在窗体中使用的控件,我们可以通过窗体的Controls方法,利用一个循环来改变窗体中的控件属性
   
For
I = 1 To 30
        UserForm1.Controls("CheckBox1" & I).Value = True

    Next
更多的属性修改方法,也可以通过循环来完成
    For
I = 1 To 30
        With
UserForm1.Controls("CheckBox1" & I)
            .Caption = "*****"
            .Top = 20 + Rnd() * 20
            .Value = 1
            .Left = 20 * Rnd()
        End
With
    Next
但是,对于工作表,由于没有提供Controls,当我们需要集中修改工作表控件属性时
只能逐个进行修改?例如:
Sheet1.CheckBox1.Value = True

Sheet1.CheckBox2.Value = True
......
Sheet1.CheckBox29.Value = True

Sheet1.CheckBox30.Value = True
如果还要修改其它属性,那代码就显示特别长,看着就不舒服。
特别是当这些控件处于组合状态时,更是不方便批量修改。
二、问题解决方案
难道就没有更好的办法吗?
想一想,如何在工作表中也能用循环来实现批量修改控件的属性

(备注:通过字符串变量,获取对工作表中控件的访问)

三、题目要求:
1、对工作表中的16个复选框进行排列,前8个是单独的复选框,后8个复选框处于组合状态。(不得在设计模式下更改各控件属性
2、必须使用循环方式,将这16个复选框排列整齐,前面8个为一列,最上面一个复选框与C6单元格对齐(顶边距、左边距),其它紧跟在后面, _
    无间隙,与第一个对齐。后面8个为一列,已经组合为一体,要求其与F6单元格对齐(左边距,顶边距)。
3 、根据其名称修改对应的Caption
4、依次设定其链接的单元格为IV列对应行据单元格。如 CheckBox2对应Cells(2,"IV") , CheckBox16 对应Cells(16,"IV")
5、重复运行所编写宏,达到逻辑开关功能,如执行宏之前某复选框为真(假),则运行宏之后该复选框须为假(真),反之亦然。
6、完成之后,必须与效果图一致各复选框字体颜色交替为、蓝、排列
7、使用VBA完成,而且必须使用循环批量完成。


四:限制条件:
参赛对象:
  原则上只允许技术分<=3分者参与。
                                同时也欢迎广大会员参与,对于对其他参赛优秀作品,不排除加分的可能。
题目分值: 1分,完成要求得1 分,如答题者同时提交三种或以上方法者,可得2分。

特别说明:1、本次竞赛,特别设置了门槛,原则上只对技术分<=3(小于或等于3分)的会员参加,并降低了竞赛题目难度,旨在吸引更多的会员参与。
                  2、直接跟帖回答。
3、答题截止时间 2009-8-20  23:59:59   以发贴最后编辑时间为准



[ 本帖最后由 ldy 于 2009-7-28 10:02 编辑 ]

[ 本帖最后由 清风_ll 于 2009-8-21 22:24 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-7-28 15:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不知道这个算不算多种方法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-5 22:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

在VBA中使用循环批量修改工作表中复选框属性答题

感觉自己用的方法很平淡。希望能学到更多的知识。
请楼主悉心斧正!

[ 本帖最后由 gg19782002 于 2009-8-6 19:57 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-6 22:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
支持老朽!
简述答题随想:
在想做与不想做之间(因题目限制技术分 我的技术分不在范围)
其实我(或大家)很明白 论坛上技术分为0的高手如云
我也很理解老朽出题之意
其实这题说简单并不简单
我很吃力地写了这段代码 若符合题意 则我必向老朽要技术分

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-8 12:10 | 显示全部楼层
  1. Sub VBA_4()
  2. Dim obj As Object, shp As Shape
  3. Dim s(1 To 8) As Variant, b As String, h As Long, i As Long
  4. Application.ScreenUpdating = False
  5. On Error Resume Next
  6. With ActiveSheet
  7.     For Each shp In .Shapes
  8.         If shp.Name Like "Group*" Then
  9.             shp.Left = [f6].Left
  10.             shp.Top = [f6].Top
  11.             .Shapes(shp.Name).Ungroup
  12.         End If
  13.     Next
  14.     b = "CheckBox"
  15.     h = .OLEObjects(b & 1).Height
  16.     For i = 1 To 16
  17.         Cells(i, "IV") = Not (Cells(i, "IV"))
  18.         With .OLEObjects(b & i)
  19.             .Object.Caption = b & i
  20.             .LinkedCell = "IV" & i
  21.             If i < 9 Then
  22.                 .Left = [c6].Left
  23.                 .Top = [c6].Top + (i - 1) * h
  24.             Else
  25.                 s(i - 8) = b & i
  26.             End If
  27.             If i Mod 3 = 1 Then
  28.                 .Object.ForeColor = RGB(255, 0, 0)
  29.             ElseIf i Mod 3 = 2 Then
  30.                 .Object.ForeColor = RGB(0, 0, 255)
  31.             Else
  32.                 .Object.ForeColor = RGB(0, 255, 255)
  33.             End If
  34.         End With
  35.     Next
  36.     .Shapes.Range(s).Group
  37. End With
  38. Application.ScreenUpdating = True
  39. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-11 08:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

请审核

第一次参加答题,感谢老朽兄提供的试题,下面是我的答题,请审核

[ 本帖最后由 mobuli 于 2009-8-11 09:14 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-12 11:15 | 显示全部楼层
观摩观摩学习学习

[ 本帖最后由 yes2boy 于 2009-8-17 11:31 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

TA的精华主题

TA的得分主题

发表于 2009-8-12 16:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请批阅

请老朽老师批阅。

[ 本帖最后由 蓝桥玄霜 于 2009-8-12 21:56 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-12 16:55 | 显示全部楼层
试试看,第4问看不太懂,不知道做出来的效果是否满足题意!!

[ 本帖最后由 unsamesky 于 2009-8-14 13:34 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2009-8-14 14:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
看看我的可以了吗?

[ 本帖最后由 zjdh 于 2009-8-15 15:12 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-25 09:03 , Processed in 0.050093 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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