Foxtable(狐表)用户栏目专家坐堂 → 单元格计算


  共有13525人关注过本帖树形打印复制链接

主题:单元格计算

帅哥哟,离线,有人找我吗?
明丰
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
单元格计算  发帖心情 Post By:2011/10/26 12:05:00 [显示全部帖子]

打开数值列的计算器,这时通过键盘输入算式可以计算结果。

 

如果数值列不使用内置输入器而希望在单元格实现下面功能:

 

键盘输入算式,按“回车”时计算结果.

 

请问用代码如何设置?


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/26 13:14:00 [显示全部帖子]

某软件可以在单元格输入算式直接计算(单元格是数值类型),不知是如何设置的。
图片点击可在新窗口打开查看此主题相关图片如下:单元格计算.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/26 17:03:00 [显示全部帖子]

列类型设置为字符型,用Eval函数可以实现单元格计算,如:

If e.DataCol.Name = "第四列" Then
    If e.DataRow.IsNull("第四列") Then
        e.DataRow("第四列") = Nothing
    Else
        e.DataRow("第四列") = Eval(e.DataRow("第四列"),e.DataRow)
    End If
End If

 

如果列类型是数值型时,没办法输入运算符.


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/26 21:28:00 [显示全部帖子]

数值列只能输入数值,输入其它值时无效,不会显示。

 

要实现类似功能,如某一列是字符型,希望该列只能输入“数值和运算符”,其它值无效,不会显示。

 

请问如何设置?


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 8:21:00 [显示全部帖子]

以下是引用明丰在2011-10-26 21:28:00的发言:

数值列只能输入数值,输入其它值时无效,不会显示。

 

要实现类似功能,如某一列是字符型,希望该列只能输入“数值和运算符”,其它值无效,不会显示。

 

请问如何设置?

请问老大这个功能如何设置?


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 9:42:00 [显示全部帖子]

如果在"计算"列中输入以数字开头的混合字符系统会错.(这个在DataColChanging中可以解决)

 

原来的构思是:在编辑字符型"计算"列时,在键盘上按下"32A"时,正在编辑的单元格只会显示"32",A无效.

即"计算"列只能输入数值和运算符,输入其它值无效.

 

请问如何设置?


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 11:26:00 [显示全部帖子]

这样可以了.

'ChangeEdit限制键盘部份键位输入,只能输入数值和运算符
If e.Col.name = "计算" Then
    If e.Text IsNot Nothing Then
        Dim r As String = e.Text
        Dim s() As String = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","~","!","`","@","#","$","%","&","_","|"}
        For Each d As String In s
            If r.length > 0 Then
                If r.Chars(r.length-1) = d Then
                    Sendkeys.Send("{BACKSPACE}")
                End If
            End If
        Next
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 12:23:00 [显示全部帖子]

找不到关于类型Char可以判断指定的字符是否属于算术运算符、括号的函数。

 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 12:47:00 [显示全部帖子]

s = "1234567890+-*/." & "(" & ")"

 

谢谢!

[此贴子已经被作者于2011-10-27 12:49:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
明丰
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/10/27 13:45:00 [显示全部帖子]

'编辑KeyPressEdit
If e.Col.name = "计算" Then
    Dim s As String
    s = "1234567890+-*/.()"
    If s.IndexOf(e.KeyChar) < 0 Then '如果没有找到字符
        e.Cancel = True
    End If
End If

根据上面的设置,单元格的值只能增加,不能修改和删除。(我原来的设置可以修改)


 回到顶部
总数 11 1 2 下一页