我想在编辑VSFlexGrid单元格的时候,每按一下键盘就将单元格的数据和其他数据运算,显示出来,但是我用断点看了一下,修改单元格的内容时,虽然显示内容改了,但是用
VSFlexGrid1.TextMatrix(row,col)看时并没有改变。比如说:VSFlexGrid1.TextMatrix(1,1)的内容原来是100,我在编辑VSFlexGrid1.TextMatrix(1,1)时,再输入一个0,变成1000,虽然再编辑时显示的是1000,但是VSFlexGrid1.TextMatrix(1,1)的内容还是100没变,好象是要将焦点切换到另一单元格时,VSFlexGrid1.TextMatrix(row,col)内容才改变,谁有办法实现在VSFlexGrid中编辑时每按下一个键盘中的每一个按键VSFlexGrid1.TextMatrix(row,col)内容也跟着变。下面是我的代码:
Private Sub VSFlexGrid1_Click()
Clk = True With VSFlexGrid1 .EditCell
.EditSelStart = 0
.EditSelLength = Len(.EditText) End With
End SubPrivate Sub VSFlexGrid1_KeyDownEdit(ByVal Row As Long, ByVal Col As Long, KeyCode As Integer, ByVal Shift As Integer) ' If KeyCode >= 48 And KeyCode <= 57 Then If VSFlexGrid1.TextMatrix(Row, Col) <> "" Then
For i = 1 To VSFlexGrid1.Rows - 2
VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1) = VSFlexGrid1.TextMatrix(i, SLcol) * VSFlexGrid1.TextMatrix(i, DJcol) * VSFlexGrid1.TextMatrix(i, ZKcol) //注:在编辑时按下键盘的按键时这里相应的单元格的内容不便
Next
amount = 0
For i = 1 To VSFlexGrid1.Rows - 2
If VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1) <> "" Then
amount = amount + VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1)
End If
Next
VSFlexGrid1.TextMatrix(VSFlexGrid1.Rows - 1, VSFlexGrid1.cols - 2) = "合计:"
VSFlexGrid1.TextMatrix(VSFlexGrid1.Rows - 1, VSFlexGrid1.cols - 1) = amount
End If ' VSFlexGrid1.Refresh
End Sub
VSFlexGrid1.TextMatrix(row,col)看时并没有改变。比如说:VSFlexGrid1.TextMatrix(1,1)的内容原来是100,我在编辑VSFlexGrid1.TextMatrix(1,1)时,再输入一个0,变成1000,虽然再编辑时显示的是1000,但是VSFlexGrid1.TextMatrix(1,1)的内容还是100没变,好象是要将焦点切换到另一单元格时,VSFlexGrid1.TextMatrix(row,col)内容才改变,谁有办法实现在VSFlexGrid中编辑时每按下一个键盘中的每一个按键VSFlexGrid1.TextMatrix(row,col)内容也跟着变。下面是我的代码:
Private Sub VSFlexGrid1_Click()
Clk = True With VSFlexGrid1 .EditCell
.EditSelStart = 0
.EditSelLength = Len(.EditText) End With
End SubPrivate Sub VSFlexGrid1_KeyDownEdit(ByVal Row As Long, ByVal Col As Long, KeyCode As Integer, ByVal Shift As Integer) ' If KeyCode >= 48 And KeyCode <= 57 Then If VSFlexGrid1.TextMatrix(Row, Col) <> "" Then
For i = 1 To VSFlexGrid1.Rows - 2
VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1) = VSFlexGrid1.TextMatrix(i, SLcol) * VSFlexGrid1.TextMatrix(i, DJcol) * VSFlexGrid1.TextMatrix(i, ZKcol) //注:在编辑时按下键盘的按键时这里相应的单元格的内容不便
Next
amount = 0
For i = 1 To VSFlexGrid1.Rows - 2
If VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1) <> "" Then
amount = amount + VSFlexGrid1.TextMatrix(i, VSFlexGrid1.cols - 1)
End If
Next
VSFlexGrid1.TextMatrix(VSFlexGrid1.Rows - 1, VSFlexGrid1.cols - 2) = "合计:"
VSFlexGrid1.TextMatrix(VSFlexGrid1.Rows - 1, VSFlexGrid1.cols - 1) = amount
End If ' VSFlexGrid1.Refresh
End Sub
解决方案 »
- 如何实现在一个软件中捆绑另一个文件格式为.exe的小软件?
- 这个怎么解?谢谢!
- 菜鸟的问题
- 我用VB自己带的打包工具,怎么提示“路径不包含文件名”?急!!!谢谢
- MSFlexGrid中如何在任意位置删除一行和插入一行?
- 如何捕捉win键?网上找到不到啊!
- usb通讯,急!!
- 请问高手:怎样把excel表格sheet1里的每行的内容一一相应地读到sheet2的指定位置。谢谢!
- 需要打印预览的朋友,请过来看看,用我的打印预览控件可以轻松搞定,而且很简单、截面也完全个性化,并且是微软office风格,可以根据客户要求定制控件.可以打印条形码、支票。
- 用vb做的密码验证程序如何在开机时运行?很急,谢谢
- 求助。如何获得IE窗口的句柄
- 请问时间先后的比较
With fg
.EditCell
End With
End SubPrivate Sub fg_KeyUpEdit(ByVal Row As Long, ByVal Col As Long, KeyCode As Integer, ByVal Shift As Integer)
With fg
.TextMatrix(Row, Col) = .TextMatrix(Row, Col) & Chr(KeyCode)
Debug.Print .TextMatrix(Row, Col)
End With
End Sub
Private Sub fg_KeyUpEdit(ByVal Row As Long, ByVal Col As Long, KeyCode As Integer, ByVal Shift As Integer)
With fg
If (KeyCode >= 48 And KeyCode <= 57) Then
.Select Row - 1, Col - 1, Row - 1, Col
.Select Row, Col, Row, Col
SendKeys "{Right}"
End If
End With
End SubPrivate Sub fg_SelChange()
With fg
.EditCell
End With
End Sub