从理论上讲,当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

解决方案 »

  1.   

    又重新看了一下这个帖子.http://club.excelhome.net/viewthread.php?tid=395683&extra=&page=1技巧106 多个文本框数据相加.xls其解决方法是
    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成立??????
      

  2.   

    Text1_Change(Index As Integer)与MshFlexGrid结合使用出现的问题,从理论讲是可行的,但在操作出问题???Public WithEvents cmd As MSForms.TextBox
    重新设置一个控件
    Private Sub cmd_Change() 程序成立理论分析, cmd应该是Text控件, form中直接建立一个Text控件应该是等价的.不应该出现这个问题.
      

  3.   

    好像是用了控件数组text1(0),textBox(1)引起的问题。看看从这方面入手能否解决。
      

  4.   

    VBA操作控件数组与VB6下操作控件数组的方式不同,
    VBA下不支持VB6中的数组控件操作方式。看完以下这个你就明白了:
    http://v.youku.com/v_show/id_XMzU2OTk4NzI=.html#
      

  5.   

    VBA操作控件数组与VB6下操作控件数组的方式不同,
    VBA下不支持VB6中的控件数组操作方式。看完以下这个你就明白了:
    http://v.youku.com/v_show/id_XMzU2OTk4NzI=.html#
      

  6.   


    看来大侠没有理解标题的含义。所链接的帖子,讲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