MSFlexGrid结合textbox做了一个可编辑的MSFlexGrid,如何判断上一个cell中的数字是否合法?

lijuan1215_2009 2011-03-23 04:46:50
如题,当我点击下一个cell准备输入数字时,怎么判断刚才输入的哪个是否在范围内。
Private Sub MSFlexGrid1_LeaveCell()
Dim ts As Single
ts = Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col))
If MSFlexGrid1.Row = 2 Then
If ts <= 0 Or ts > 3600 Then
MsgBox "范围:0 - 3600 秒", vbExclamation, "注意"
End If
Else
If MSFlexGrid1.Row = 3 Then
If ts < 190 Or ts > 700 Then
MsgBox "范围:190 - 700nm", vbExclamation, "注意"
End If
End If
End If
End Sub

我这样写 但是不行。
...全文
232 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
事件validate里判断
贝隆 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 king06 的回复:]
找到之前写的一个,是编辑完后按enter确认的. 你参考下
(如果不用enter确认,在文本框的lostfocus事件中判断吧,不过不推荐)

VB code
Private Sub MSFlexGrid1_Click()
With MSFlexGrid1
Text1.Visible = True
Text1.Move .ColPos(.Col……
[/Quote]
+1
pyf975467363 2011-03-23
  • 打赏
  • 举报
回复
我这里有个代码,求各位高手解决
Private Sub Command1_Click()
Set objVoice = CreateObject("SAPI.SpVoice")
s = Text1.Text
If s = "" Then
Exit Sub
ElseIf s = " " Then
n = Replace(board, Chr(10), "。。")
objVoice.Speak n
Else
objVoice.Speak s
End If
End Sub
窗体上有一个文本框和一个命令按钮,单击命令按钮,系统读出文本框的内容。(XP可以读英文和拼音,vista win7可以中英文阅读)
如果读的文本长一点的话,程序就会假死。有高手能帮我看看,这个是什么原因导致的。有没有什么解决的办法吗?这个代码是我跟据一个脚本文件改编的。我自己也是一知半解。。这个是我毕业设计里的一个功能。
king06 2011-03-23
  • 打赏
  • 举报
回复
找到之前写的一个,是编辑完后按enter确认的. 你参考下
(如果不用enter确认,在文本框的lostfocus事件中判断吧,不过不推荐)
Private Sub MSFlexGrid1_Click()
With MSFlexGrid1
Text1.Visible = True
Text1.Move .ColPos(.Col), .RowPos(.Row), .ColWidth(.Col), .RowHeight(.Row)
Text1.BackColor = &HC0FFC0
Text1.Text = ""
If .TextMatrix(.Row, .Col) = "" Then
Text1.Text = ""
Else
Text1.Text = .TextMatrix(.Row, .Col)
End If
Text1.SelLength = Len(Text1.Text)
Text1.SetFocus
End With
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 13 Then Exit Sub
If Text1.BackColor = &HC0FFC0 Then
Text1.Visible = False
MSFlexGrid1.SetFocus
'数据是否合法,这里判断
'……略
MSFlexGrid1.Text = Text1.Text
End If
End Sub
lijuan1215_2009 2011-03-23
  • 打赏
  • 举报
回复
那咋办啊 ,我没有思路啊,请帮帮忙吧。
king06 2011-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lijuan1215_2009 的回复:]
就是在离开这个单元格的时候检查吧,就是不知道怎么做,并且每一列的范围是不一样的,还要判断是在那一列?
[/Quote]
列范围不一样当然要判断那一列,不过我认为在LeaveCell里面判断不好处理吧. 毕竟你也是用textbox来编辑的,不是直接在单元格上编辑的啊
lijuan1215_2009 2011-03-23
  • 打赏
  • 举报
回复
就是在离开这个单元格的时候检查吧,就是不知道怎么做,并且每一列的范围是不一样的,还要判断是在那一列?
king06 2011-03-23
  • 打赏
  • 举报
回复
这个判断提醒应在你给单元格赋值之前检查
king06 2011-03-23
  • 打赏
  • 举报
回复
你这个有啥问题? 后面要加exit sub...

MsgBox "范围:0 - 3600 秒", vbExclamation, "注意"
exit sub

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧