如何在Excel服务器的明细表中限制输入重复项目
如何在明细表中限制输入重复项目呢?在此提供如下解决办法,仅供参考。
一、使用EXCEL本身功能:自定义数据有效性
1、在模板的设计状态,选择待输入项目的区域,点击EXCEL 菜单“数据”、“数据有效性”,弹出“数据有效性”窗口,在“设置”标签中进行如下设置:

图1-1
2、在“出错警告”标签中进行如下设置:

图1-2
3、进入模板的“填报”状态,当输入重复项目时会出现下图提示,点击“取消”按钮后,最近输入的重复项a会被自动清除

图1-3
二、Excel服务器在填报的时候,会更新单元格的有效性,把你的“自定义”有效性用下拉列表、树型选择或列表选择覆盖掉,即在Excel中自定义的数据有效性就不再起作用了。如何解决这个问题呢?
(一)
使用EXCEL工作表公式显示“有重复”提示信息,如下图:

图2-1 公式

图2-2 公式结果
(二)使用简单的VBA代码进行重复检查
1、在模板的设计状态,进入VBA编辑器,在sheet1模块中键入以下代码:

图2-3
Private Sub Worksheet_Change(ByVal Target
As Range)
Dim Rng As Range
Set Rng = Range("b5:b12")
For Each cell In Rng
If
Application.WorksheetFunction.CountIf(Rng, cell.Value) > 1 Then
MsgBox "项目重复!请检查"
Exit Sub
End If
Next
End Sub
2、进入模板的“填报状态”,,当输入重复项目时会出现下图提示:

图2-4
三、在模板中使用“条件格式”,突出显示重复项目
1、为待输入区域设置“条件格式”:在模板的设计状态,选择待输入项目的区域,点击EXCEL 菜单“格式”、“条件格式”,弹出“条件格式”窗口,进行如下设置:

图3-1
2、设置条件格式后的效果:凡发生重复的项目所在的行都被设置成黄色:

图3-2
四、如果表中存在重复项目,如何禁止保存到数据库中
1、在模板的设计状态,进入VBA编辑器中(Alt+F11),插入一模块:

图4-1
2、在此模块中键入以下代码:
Sub SavetheRep()
'保存报表
Dim oAdd As Object
Dim aResult As Boolean
If
Range("D14") = 1 Then
MsgBox "有重复情况,无法保存!"
Exit Sub
End If
'获取Excel服务器编程接口
Set oAdd =
Application.COMAddIns("ESClient.Connect").Object
'保存当前报表,不弹出保存对话框,成功后不询问是否填报下一张
aResult =
oAdd.saveCase(, True, False)
If aResult = False Then
'若保存失败,提示
MsgBox "保存失败!"
End If
'释放对象
Set oAdd = Nothing
End Sub
3、进入EXCEL工作表页面,新建一窗体按钮,将其上文字修改成“自定义保存”,并指定宏名称为“SavetheRep”,如下图所示;在填报状态,点击此按钮,如果有重复,则会出现提示,否则会成功保存到数据库:

图4-2

图4-3 填报第1行

图4-4填报第2行

图4-5 检查结果