ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: elaine1994

[求助] 求助,如何用vba给单元格设置数据有效性下拉列表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-23 07:02 | 显示全部楼层
elaine1994 发表于 2020-6-22 22:29
能解释一下吗,有点看不懂

谢谢17楼老师的代码。谢谢老师!
  1. Private Sub Worksheet_Change(ByVal T As Range)                                  '私有的子程序 工作表_Change(变量T为 单元格区域)
  2.     If T.Row = 9 And T.Column = 2 Then                                          '如果  T的行标=9并且  T的列标=2则执行
  3.         Set Rng = Sheets("数据").Columns(1).Find(T.Value, , , 1)                '设定Rng=<工作表>"数据" )的<列>坐标1 )的<查找> T的值,,,1)
  4.         If Not Rng Is Nothing Then                                              '如果 非 Rng是 空值则执行
  5.             r = Rng.Row                                                         'r= Rng的行标
  6.             ar = Sheets("数据").Range("b" & r & ":g" & r)                       'ar=<工作表>"数据" )的<单元格区域>"b" & r & ":g"& r)
  7.             For j = 1 To UBound(ar, 2)                                          '设定变量范围为j=1到<数组上限>ar,2)
  8.                 If Trim(ar(1, j)) <> "" Then                                    '如果 <消除字符串两端空格>ar(1,j))不等于 空值则执行
  9.                     If s = "" Then                                              '如果 s=空值则执行
  10.                         s = ar(1, j)                                            's=ar(1,j)
  11.                     Else                                                        '否则
  12.                         s = s & "," & ar(1, j)                                  's=s& "," & ar(1,j)
  13.                     End If                                                      'If判断过程结束
  14.                 End If                                                          'If判断过程结束
  15.             Next j                                                              '下一个j
  16.             With Range("e9").Validation                                         '工作于<单元格区域>"e9" )的Validation
  17.                 .Delete                                                         '<With对象>的删除
  18.                 .Add 3, 1, 1, Formula1:=s                                       '<With对象>的添加 3,1,1,公式1=s
  19.             End With                                                            'With语句结束
  20.             T.Offset(, 2).Select                                                ' T的<偏移>,2 )的选定
  21.             T.Offset(, 2) = ar(1, 1)                                            ' T的<偏移>,2)=ar(1,1)
  22.         End If                                                                  'If判断过程结束
  23.     End If                                                                      'If判断过程结束
  24. End Sub                                                                         '子程序结束
复制代码

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-19 02:58 , Processed in 0.034991 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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