Excel Server Home

如何在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 检查结果