Excel精英培训网

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

[已解决]关于VBA80集第44集:图片与图形处理的问题!

[复制链接]
发表于 2013-12-8 23:50 | 显示全部楼层 |阅读模式
Sub 批量插入复选框()
Dim RG As Range
   Dim S As Shape
  For Each S In ActiveSheet.Shapes   '首先删除原来的check符号
   If InStr(S.Name, "Ch") > 0 Then   '判断图形是否包含ch,如果包含就代表是复选框,然后就删除原来的,其他的不删除
      S.Delete
   End If
Next S
For Each RG In Range("B2:B15")
    ActiveSheet.CheckBoxes.Add(RG.Left, RG.Top + 5, RG.Width - 20, RG.Height - 20).Select
    With Selection
        .Characters.Text = "是"  '编辑复选框的文字内容
        .Value = xlOff
        .LinkedCell = RG.Address
    End With
Next RG
End Sub

问题1:If InStr(S.Name, "Ch") > 0 Then   S.Delete  这句话到底什么意思. 为什么我运行后就把所有的复选框先全部删除掉了?
           不是应该只把大有check选项的复选框删除掉吗?请高手解释一下?
问题2:  .Value = xlOff     什么意思?在图形中显示什么属性?              .LinkedCell = RG.Address    实在搞不明白意思?只是在excel文件表格中看到true/false。听视频的讲解也不太明白?



最佳答案
2013-12-9 00:05
  1. Sub 批量插入复选框()
  2. Dim RG As Range
  3.    Dim S As Shape
  4.   For Each S In ActiveSheet.Shapes
  5.    If InStr(S.Name, "Ch") > 0 Then
  6.       S.Delete
  7.    End If
  8. Next S
  9. For Each RG In Range("B2:B15")
  10.     ActiveSheet.CheckBoxes.Add(RG.Left, RG.Top + 5, RG.Width - 20, RG.Height - 20).Select
  11.     With Selection
  12.         .Characters.Text = "是"
  13.         .Value = xlOff
  14.         .LinkedCell = RG.Offset(, 1).Address
  15.     End With
  16. Next RG
  17. End Sub
复制代码
你执行这段后,链接单元格就改到C列对应的行。
你可以勾选复选框看C列所在行的单元格,值是否会变化。另外更改C列的值,再看看B列所在行的复选框的状态。
发表于 2013-12-9 00:02 | 显示全部楼层
问题1:复选框英文是Check Box,这里判断名称是直接取的巧。
代码循环完,就是先删除所有的复选框,你可以用F8一边运行一边观察工作表内复选框。

问题2:设置复选框的值,打勾为True,否则为False。这里用的定义好的常量。
.linkcell是链接单元格,复选框的值直接作用于单元格,单元格的值也会影响到复选框的勾选。


回复

使用道具 举报

发表于 2013-12-9 00:05 | 显示全部楼层    本楼为最佳答案   
  1. Sub 批量插入复选框()
  2. Dim RG As Range
  3.    Dim S As Shape
  4.   For Each S In ActiveSheet.Shapes
  5.    If InStr(S.Name, "Ch") > 0 Then
  6.       S.Delete
  7.    End If
  8. Next S
  9. For Each RG In Range("B2:B15")
  10.     ActiveSheet.CheckBoxes.Add(RG.Left, RG.Top + 5, RG.Width - 20, RG.Height - 20).Select
  11.     With Selection
  12.         .Characters.Text = "是"
  13.         .Value = xlOff
  14.         .LinkedCell = RG.Offset(, 1).Address
  15.     End With
  16. Next RG
  17. End Sub
复制代码
你执行这段后,链接单元格就改到C列对应的行。
你可以勾选复选框看C列所在行的单元格,值是否会变化。另外更改C列的值,再看看B列所在行的复选框的状态。
回复

使用道具 举报

发表于 2013-12-9 00:05 | 显示全部楼层
QQ截图20131209000158.jpg
回复

使用道具 举报

 楼主| 发表于 2013-12-9 00:19 | 显示全部楼层
hwc2ycy 发表于 2013-12-9 00:05

谢谢你的帮忙! 请原谅小弟有的时候比较愚蠢的问题,我是个新手.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 09:03 , Processed in 0.393298 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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