以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于限定单元格内容的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63897)

--  作者:kratosxx
--  发布时间:2015/1/31 12:07:00
--  关于限定单元格内容的问题
求助,

在表中的某列,设定了字段名为“国籍”,用“自定义项目”或者“数据表”都可以做成一个下拉式菜单,里面为“中国”、“美国”、“德国”。

现在的问题是,当我手动选择下拉菜单时,能确定只能选择到“中国”、“美国”、“德国”这三个值,“允许直接输入”设置成“false”后,可以实现无法通过键盘输入值。

但是~~~~,我使用Ctrl+C从excel中复制一个值后,居然可以直接粘贴到上面的列中,不受我之前所设置的列属性的约束了。

例如,我在上面的例子中,键盘是无法输入任何值的,只能用鼠标在下拉菜单中选择“中国”、“美国”、“德国”中的一项,

当我在excel中选择“法国”,复制后,可以直接粘贴到foxtable中的“国籍”字段中。

向各位大神求解,感激不尽!

不知有什么方法可以限定字段输入的内容,比如,只允许在该字段中输入“中国”、“美国”、“德国”三种值。

--  作者:Bin
--  发布时间:2015/1/31 12:29:00
--  

DataColChanging


If e.DataCol.name="国籍" Then

  Select Case e.NewValue

     Case "中国","美国","德国"

     Case Else

       e.Cancel=True

  End Select

End If


--  作者:kratosxx
--  发布时间:2015/2/2 13:18:00
--  
谢谢,

如果我的国家名称,“中国”“美国”“德国”,三个国家,都储存在另一张表的“国家名称”字段中,以后还需要增加国家,如何实现直接在“国家名称”中判别,我输入的值是否在范围内?

--  作者:Bin
--  发布时间:2015/2/2 14:06:00
--  
http://www.foxtable.com/help/topics/2747.htm
If e.DataCol.name="国籍" Then
 if DataTables("国籍").GetValues("国家名称").Contains(e.NewValue)=False then
      e.cancel=true
 end if
end if

--  作者:swagger
--  发布时间:2015/3/1 3:49:00
--  
以下是引用Bin在2015/2/2 14:06:00的发言:
http://www.foxtable.com/help/topics/2747.htm
If e.DataCol.name="国籍" Then
 if DataTables("国籍").GetValues("国家名称").Contains(e.NewValue)=False then
      e.cancel=true
 end if
end if

貌似不行啊


--  作者:有点甜
--  发布时间:2015/3/1 9:23:00
--  
 代码没有问题,请认真测试。