从理论上讲,当Text1控件中的数据改变后,就将数据送到Excel.
但在实际操作中,下面这个语句就出错.
现象表现,在同一Form中的Mshflexgrid的数据不能赋值到网格中.
请问各位大侠,Text1控件还有什么其它方法解决.谢谢.
Private Sub Text1_Change(Index As Integer)
With Sht
Select Case Index
Case 0
.cells(1, 3) = Val(.Text1(0))
Case 2
.cells(1, 6) = Val(.Text1(2))
Case 1
.cells(1, 8) = Val(.Text1(1))
End Select
End With
With HG20592Form
Select Case Index
Case 3
Target(1, 9) = .Text1(3)
Case 4
Target(1, 10) = .Text1(4)
Case 5
Target(1, 11) = .Text1(5)
End Select
End With
End Sub
但在实际操作中,下面这个语句就出错.
现象表现,在同一Form中的Mshflexgrid的数据不能赋值到网格中.
请问各位大侠,Text1控件还有什么其它方法解决.谢谢.
Private Sub Text1_Change(Index As Integer)
With Sht
Select Case Index
Case 0
.cells(1, 3) = Val(.Text1(0))
Case 2
.cells(1, 6) = Val(.Text1(2))
Case 1
.cells(1, 8) = Val(.Text1(1))
End Select
End With
With HG20592Form
Select Case Index
Case 3
Target(1, 9) = .Text1(3)
Case 4
Target(1, 10) = .Text1(4)
Case 5
Target(1, 11) = .Text1(5)
End Select
End With
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer
Dim myc As cmds
For i = 1 To 6
Set myc = New cmds
Set myc.cmd = Me.Controls("TextBox" & i)
col.Add myc
Next
Set myc = Nothing
End Sub
''------------------------------------
---------------Public WithEvents cmd As MSForms.TextBox
Private Sub cmd_Change()
Dim i As Integer
Dim Dval As Double
For i = 1 To 6
Dval = Dval + Val(UserForm1.Controls("TextBox" & i))
UserForm1.TextBox7.Value = Dval
Next
End Sub
问题提出:
为什么用Text1_Change不成立.
而用Public WithEvents cmd As MSForms.TextBox成立??????
重新设置一个控件
Private Sub cmd_Change() 程序成立理论分析, cmd应该是Text控件, form中直接建立一个Text控件应该是等价的.不应该出现这个问题.
VBA下不支持VB6中的数组控件操作方式。看完以下这个你就明白了:
http://v.youku.com/v_show/id_XMzU2OTk4NzI=.html#
VBA下不支持VB6中的控件数组操作方式。看完以下这个你就明白了:
http://v.youku.com/v_show/id_XMzU2OTk4NzI=.html#
看来大侠没有理解标题的含义。所链接的帖子,讲VBA的控件数组问题。
在网上又找了一下,用KeyPress代替Change(Index As Integer),目标实现。
道理需要继续消化理解。解决方法
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case Index
Case 0
Sht.cells(1, 3) = Text1(0)
Case 1
Sht.cells(1, 6) = Text1(1)
Case 2
Sht.cells(1, 8) = Text1(2)
Case 4
Target(1, 10) = Text1(4)
Case 5
Target(1, 11) = Text1(5)
End Select
End Sub