以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  复制到数值列问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=15336)

--  作者:明丰
--  发布时间:2011/12/21 11:44:00
--  复制到数值列问题

如果要复制某一单元格内容到数值列单元格中,如果数值列单元格已经进入编辑状态,如果原来的内容包含非数值字符,系统会过滤非数值字符,只粘贴数值字符.

 

如数值列单元格进入编辑状态时粘贴:AV125

 

如果是混合字符,禁止粘贴到编辑状态下数值列单元格中,请问如何设置?


--  作者:明丰
--  发布时间:2011/12/21 12:25:00
--  

如果当前焦点是"数量"列,如果粘贴板的内容包含"1234567890+-*/.()"以外的字符,则禁止粘贴.(或清除粘贴板内容)

 

请问能设置吗?


--  作者:mr725
--  发布时间:2011/12/21 12:50:00
--  

数字类型怎么会有【+-*/() 】 ???     应该只有【1234567890. 】吧。


--  作者:明丰
--  发布时间:2011/12/21 13:00:00
--  

用字符型列通过设置模拟成数值列输入格式,可以在单元格中直接计算,如在单元格中输入:25*4*8

 

数字类型怎么会有【+-*/() 】这个问题不重要,主要是设置问题,已经找到ClipBoard类,应该可以设置的.


--  作者:mr725
--  发布时间:2011/12/21 13:11:00
--  

类似这样:?

If e.DataCol.Name = "第三列" Then
    e.DataRow("第三列") = eval(e.DataRow("第三列") )
End If 

在第三列输入: 2*3  后,= 6


--  作者:明丰
--  发布时间:2011/12/21 13:33:00
--  

是的

上面提到的问题基本解决:

 

\'表事件-编辑-PrepareEdit
If e.Col.name = "数量" Then
    If ClipBoard.ContainsText Then \'判断剪贴板中是否有字符
        Dim r As String = ClipBoard.GetText()
       Dim d As String = "1234567890+-*/.()"
        For r1 As Integer = 0 To r.length -1
            If d.IndexOf(r(r1)) < 0 AndAlso Char.IsControl(r(r1))  = False Then
                ClipBoard.Clear \'清除剪贴板中的内容
            End If
        Next
    End If
End If


--  作者:明丰
--  发布时间:2011/12/21 14:50:00
--  


如果只希望剪贴板中的内容在"数量"列中不可用,请问如何设置?

 

(在清除剪贴板内容之前先保存到其它地方,离开"数量"列时再重新添加到剪贴板中,感觉不好)