VBA技巧12-单元格中的数据有效性_第1页
VBA技巧12-单元格中的数据有效性_第2页
VBA技巧12-单元格中的数据有效性_第3页
VBA技巧12-单元格中的数据有效性_第4页
VBA技巧12-单元格中的数据有效性_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档倾情为你奉上精选优质文档倾情为你奉上专心专注专业专心专注专业精选优质文档倾情为你奉上专心专注专业单元格中的数据有效性在单元格中建立数据有效性在单元格中建立数据有效性可以使用Add方法,如下面的代码所示。#001 Sub Validation()#002 With Range(A1:A10).Validation#003 .Delete#004 .Add Type:=xlValidateList, _#005 AlertStyle:=xlValidAlertStop, _#006 Operator:=xlBetween, _#007 Formula1:=1,2,3,4,5,6,7,8

2、#008 End With#009 End Sub代码解析:使用Add方法在A1:A10单元格中建立数据有效性。第3行代码删除已建立的数据有效性,防止代码运行出错。第4行到第7行代码使用Add方法建立数据有效性。应用于Validation对象的Add方法的语法如下:expression.Add(Type, AlertStyle, Operator, Formula1, Formula2)参数expression是必需的,返回一个Validation对象。参数Type是必需的,数据有效性类型。参数AlertStyl是可选的,有效性检验警告样式。参数Operator是可选的,数据有效性运算符。参数

3、Formula1是可选的,数据有效性公式的第一部分。参数Formula2是可选的,当Operator为xlBetween或xlNotBetween时,数据有效性公式的第二部分(其他情况下,此参数被忽略)。Add 方法所要求的参数依有效性检验的类型而定,如 REF _Ref h 表格 121所示。数据有效性类型参数xlValidateCustomFormula1 必需,忽略 Formula2。Formula1 必须包含一个表达式,数据项有效时该表达式取值为 True,而数据项无效时取值为 False。xlInputOnly能使用 AlertStyle、Formula1 或 Formula2 参数

4、。xlValidateListFormula1 必需,忽略 Formula2。Formula1 必须包含以逗号分隔的取值列表,或引用此列表的工作表。xlValidateWholeNumber、xlValidateDate、xlValidateDecimal、xlValidateTextLength 或 xlValidateTime必须指定 Formula1 或 Formula2 之一,或两者均指定。表格 STYLEREF 3 s 12 SEQ 表格 * ARABIC s 3 1数据有效性类型判断单元格是否存在数据有效性在VBA中没有专门的属性判断单元格是否存在数据有效性设置,可以使用Valid

5、ation对象的有效性类型和错误陷阱来判断,如下面的代码所示。#001 Sub Validation()#002 On Error GoTo Line#003 If Range(A2).Validation.Type = 0 Then#004 MsgBox 单元格有数据有效性!#005 Exit Sub#006 End If#007 Line:#008 MsgBox 单元格没有数据有效性!#009 End Sub代码解析:Validation过程使用Validation对象的有效性类型和错误陷阱来判断A2单元格中是否存在数据有效性。第6行代码,如果A2单元格中存在数据有效性,Type参数值就会

6、大于等于0,否则就会发生错误,使用On Error GoTo捕捉到错误后转移到第8行代码,显示一个消息框。动态的数据有效性利用VBA可以在单元格中建立动态的数据有效性,如下面的代码所示。#001 Private Sub Worksheet_SelectionChange(ByVal Target As Range)#002 If Target.Column = 1 And Target.Count = 1 And Target.Row 1 Then#003 With Target.Validation#004 .Delete#005 .Add Type:=xlValidateList, _#0

7、06 AlertStyle:=xlValidAlertStop, _#007 Operator:=xlBetween, _#008 Formula1:=主机,显示器#009 End With#010 End If#011 End Sub#012 Private Sub Worksheet_Change(ByVal Target As Range)#013 If Target.Column = 1 And Target.Row 1 And Target.Count = 1 Then#014 With Target.Offset(0, 1).Validation#015 .Delete#016 S

8、elect Case Target#017 Case 主机#018 .Add Type:=xlValidateList, _#019 AlertStyle:=xlValidAlertStop, _#020 Operator:=xlBetween, _#021 Formula1:=Z286,Z386,Z486,Z586#022 Case 显示器#023 .Add Type:=xlValidateList, _#024 AlertStyle:=xlValidAlertStop, _#025 Operator:=xlBetween, _#026 Formula1:=三星17,飞利浦15,三星15,飞

9、利浦17#027 End Select#028 End With#029 End If#030 End Sub代码解析:第1行到第11行代码,工作表的SelectionChange事件,当选择工作表的A列单元格时,在A2以下的单元格中建立动态的数据有效性。其中第2行代码,利用SelectionChange事件的Target参数来限制事件的触发条件。第3行到第9行代码使用Add方法在A列单元格中建立数据有效性。应用于Validation对象的Add方法请参阅技巧 REF _Ref r h 12-1。第12行到第30行代码,工作表的Change事件,当工作表A列单元格内容改变时,在B列单元格中建立

10、动态的数据有效性。其中第16行到第27行代码,根据A列单元格的内容在B列对应的单元格中建立数据有效性,其Formula1参数的值根据A列单元格的内容而变化,使之达到动态数据有效性的效果,如 REF _Ref h 图 121、 REF _Ref h 图 122所示。图 STYLEREF 3 s 12 SEQ 图 * ARABIC s 3 1动态数据有效性1图 STYLEREF 3 s 12 SEQ 图 * ARABIC s 3 2动态数据有效性2自动展开数据有效性下拉列表选择工作表单元格时自动展开数据有效性的下拉列表,如下面的代码所示。#001 Private Sub Worksheet_Sel

11、ectionChange(ByVal Target As Range)#002 If Target.Column = 5 Then Application.SendKeys %down#003 End Sub代码解析:当选择工作表的E列中有数据有效性的单元格时使用SendKeys方法发送Alt+向下键,打开数据有效性的下拉列表。应用于Application对象的SendKeys方法将击键发送给活动应用程序,语法如下:expression.SendKeys(Keys, Wait)参数expression是可选的,该表达式返回一个Application对象。参数Keys是必需的,要发送的键或者组合

12、键,以文本方式表示。Keys参数可以指定任何单个键或与Alt、Ctrl 或Shift的组合键(或者这些键的组合)。每个键可用一个或多个字符表示。例如,a 表示字符 a,或者 ENTER 表示 Enter。若要指定在按相应键时不会显示的字符(例如,Enter 或 Tab),请使用如 REF _Ref h 表格 122所列的代码来表示相应的键,表中的每个代码表示键盘上的一个键。键代码BackspaceBACKSPACE 或 BSBreakBREAKCaps LockCAPSLOCKClearCLEARDelete 或 DelDELETE 或 DELEndENDEnter(波形符)Enter(数字小键盘)ENTEREscESCAPE 或 ESC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论