ControlSource单元格更改时,Excel UserForm文本框不会更新

时间:2012-05-08 10:51:15

标签: excel vba userform

我有一个包含各种文本框的用户表单,其中ControlSource属性设置为Sheet1中的单元格。还有一个CommandButton。

单击CommandButton从SQL Server数据库中检索数据并填充Sheet1。但是,除非我关闭用户表单并重新打开它,否则文本框不会刷新。我已经尝试将UserForm1.Repain作为CommandButton Click事件的最后一行,但它仍然无法正常工作。

2 个答案:

答案 0 :(得分:1)

好的,基于我之前的评论,您可以执行以下操作,以自动重新加载表单上每个文本框的ControlSource

Dim ctl As Control

For Each ctl In Me.Controls
    If TypeOf ctl Is MSForms.TextBox Then
        ctl.ControlSource = ctl.ControlSource
    End If
Next ctl

Set ctl = Nothing

答案 1 :(得分:0)

我不太明白...试图复制你的问题,但我没有probs。我使用了以下代码

Private Sub CommandBut_Click()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sqls As String
Dim myRec As Integer
Set rs = New ADODB.Recordset
Set cnn = New ADODB.Connection

cnn.ConnectionString = "UID=***;PWD=***;DSN=***;"

sqls = "select data1, data2 from someRandomTable where data1 = '" & textbox1 & '" and data2 = '" & textbox2 & '"
rs.Open sqls, cnn.ConnectionString, adOpenStatic

 Dim z As Integer
z = 1
If rs.RecordCount > 0 Then
   rs.MoveFirst

  Do While Not rs.EOF
  Cells(z, 1).Value = rs.Fields(0).Value
          Cells(z, 2).Value = rs.Fields(1).Value
              z = z + 1
        End With
    rs.MoveNext
  Loop
  Else
  MsgBox "nothing found", vbCritical
End If
Set rs = Nothing
Set cnn = Nothing
End Sub

我已将TextBox1,2的ControlSourceProperty设置为sheet1!A1和B1。

CommandBut_Click将读取文本框的值,然后使用SQL覆盖它,它会更新textbox1和2的值。