execl编程控制每次输入的数据
需要制作一个execl让用户填写,
execl需要,只能输入 100行, 10列,且第1行是列头,应该是只读的,
填写数据时,完成的单元格需要经过我的一个函数来检查其数据格式是否正确,
我该用宏还是vba?大家提提建议,现在一点头绪也没有,谢谢了!!!
[解决办法]
校验
1)在宏中写一个检验函数,返回值为 Boolean。
2)在单元的条件格式中,就可以用该函数,使得格式错误时可以用不同的颜色进行提示。
锁定
1)将允许可输入的 A2:J100 区域选中,右键菜单的“设置单元格格式”,在“保护”页中将“锁定”的选中去掉。
2)菜单“工具\保护\保护工作表”,设置好密码,这样除了 A2:J100 区域以外都是只读的单元。
[解决办法]
' 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
[解决办法]