首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

execl编程控制每次输入的数据,该如何解决

2012-01-18 
execl编程控制每次输入的数据需要制作一个execl让用户填写,execl需要,只能输入 100行, 10列,且第1行是列头

execl编程控制每次输入的数据
需要制作一个execl让用户填写,

execl需要,只能输入 100行, 10列,且第1行是列头,应该是只读的,

填写数据时,完成的单元格需要经过我的一个函数来检查其数据格式是否正确,

我该用宏还是vba?大家提提建议,现在一点头绪也没有,谢谢了!!!

[解决办法]
校验
1)在宏中写一个检验函数,返回值为 Boolean。
2)在单元的条件格式中,就可以用该函数,使得格式错误时可以用不同的颜色进行提示。

锁定
1)将允许可输入的 A2:J100 区域选中,右键菜单的“设置单元格格式”,在“保护”页中将“锁定”的选中去掉。
2)菜单“工具\保护\保护工作表”,设置好密码,这样除了 A2:J100 区域以外都是只读的单元。
[解决办法]

VB code
' 1. 输入表头内容后,用密码锁定表头。' 2. 在你的 Excel 工作薄中加入下列代码:'' ======  标准模块中的代码  ======Option ExplicitPrivate Const NOTENTRY& = &H9090ABCDPrivate lFlag As LongPrivate Sub Worksheet_Change(ByVal Target As Range)    If (NOTENTRY = lFlag) Then Exit Sub    If (CheckValidity(Target)) Then Exit Sub    lFlag = NOTENTRY    Target.FormulaR1C1 = ""    lFlag = 0&End Sub' ======  输入数据的 Sheet 中的代码  ======Option ExplicitPublic Function CheckValidity(objRng As Range) As Boolean    If (objRng.Row > 100) Then CheckValidity = False: Exit Function    If (objRng.Column > 10) Then CheckValidity = False: Exit Function    ' 假设你的校验数据格式的函数是 DataValidity()    ' 声明格式:Function DataValidity(strData As String) As Boolean    ' 入口参数:strData --- 待校验的数据    ' 返回参数:合法 -- True    不合法 --- False    If (DataValidity(objRng.Value)) Then        CheckValidity = True: Exit Function    Else        MsgBox "输入数据格式不正确,请重新输入!", 48, "数据校验"        CheckValidity = False: Exit Function    End IfEnd Function
[解决办法]
探讨不过,校验的,不是很懂,能不能再说明一下,
在哪里写一个检验函数,在哪里调用这个函数,这些检验函数应该是要有密码才能访问的吧,那要怎么加密?

[解决办法]
刚才注意到:我把“标准模块中的代码”和“输入数据的 Sheet 中的代码”写反了...........


1. 在哪个表中要进行数据校验,就要把第一段代码粘贴到相应表的代码窗口中。
2. 第二段代码贴到一个标准模块中。
3. 把函数 Function DataValidity(strData As String) As Boolean 实现。只有你才知道什么样的数据是合法的。
 如果 Function DataValidity() 与 我的第二段代码不在同一模块中,必须声明为 Public 的;在同一模块中,声明成 Public 或 Private 都可以。

[解决办法]

[解决办法]
图片居然被裁切了...........

图片URL :http://hi.csdn.net/attachment/200910/20/40384_12560594649EET.png

[解决办法]
公共函数应该写在模块中。
整列校验可以用12楼的方式在 WorkSheet_Change() 中进行。
在 VBAProject 的属性对话框中有保护的设置,设定后没有密码就不能查看代码。

热点排行