execl编程控制每次输入的数据,该如何解决
execl编程控制每次输入的数据
需要制作一个execl让用户填写,
execl需要,只能输入 100行, 10列,且第1行是列头,应该是只读的,
填写数据时,完成的单元格需要经过我的一个函数来检查其数据格式是否正确,
我该用宏还是vba?大家提提建议,现在一点头绪也没有,谢谢了!!!
------解决方案--------------------
校验
1)在宏中写一个检验函数,返回值为 Boolean。
2)在单元的条件格式中,就可以用该函数,使得格式错误时可以用不同的颜色进行提示。
锁定
1)将允许可输入的 A2:J100 区域选中,右键菜单的“设置单元格格式”,在“保护”页中将“锁定”的选中去掉。
2)菜单“工具\保护\保护工作表”,设置好密码,这样除了 A2:J100 区域以外都是只读的单元。
------解决方案--------------------
需要制作一个execl让用户填写,
execl需要,只能输入 100行, 10列,且第1行是列头,应该是只读的,
填写数据时,完成的单元格需要经过我的一个函数来检查其数据格式是否正确,
我该用宏还是vba?大家提提建议,现在一点头绪也没有,谢谢了!!!
------解决方案--------------------
校验
1)在宏中写一个检验函数,返回值为 Boolean。
2)在单元的条件格式中,就可以用该函数,使得格式错误时可以用不同的颜色进行提示。
锁定
1)将允许可输入的 A2:J100 区域选中,右键菜单的“设置单元格格式”,在“保护”页中将“锁定”的选中去掉。
2)菜单“工具\保护\保护工作表”,设置好密码,这样除了 A2:J100 区域以外都是只读的单元。
------解决方案--------------------
- VB code
' 1. 输入表头内容后,用密码锁定表头。 ' 2. 在你的 Excel 工作薄中加入下列代码: ' ' ====== 标准模块中的代码 ====== Option Explicit Private Const NOTENTRY& = &H9090ABCD Private lFlag As Long Private 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 Explicit Public 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 If End Function
------解决方案--------------------
------解决方案--------------------
刚才注意到:我把“标准模块中的代码”和“输入数据的 Sheet 中的代码”写反了...........
1. 在哪个表中要进行数据校验,就要把第一段代码粘贴到相应表的代码窗口中。
2. 第二段代码贴到一个标准模块中。
3. 把函数 Function DataValidity(strData As String) As Boolean 实现。只有你才知道什么样的数据是合法的。
如果 Function DataValidity() 与 我的第二段代码不在同一模块中,必须声明为 Public 的;在同一模块中,声明成 Public 或 Private 都可以。
------解决方案--------------------
------解决方案--------------------
图片居然被裁切了...........
图片URL :http://hi.****.net/attachment/200910/20/40384_12560594649EET.png
------解决方案--------------------
公共函数应该写在模块中。
整列校验可以用12楼的方式在 WorkSheet_Change() 中进行。
在 VBAProject 的属性对话框中有保护的设置,设定后没有密码就不能查看代码。