我有一个包含各种文本框的用户表单,其中ControlSource属性设置为Sheet1中的单元格。还有一个CommandButton。
单击CommandButton从SQL Server数据库中检索数据并填充Sheet1。但是,除非我关闭用户表单并重新打开它,否则文本框不会刷新。我已经尝试将UserForm1.Repain作为CommandButton Click事件的最后一行,但它仍然无法正常工作。
答案 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的值。