我有一个带有各种文本框的用户表单,这些文本框的 ControlSource 属性设置为 Sheet1 中的单元格。还有一个命令按钮。
单击命令按钮从 SQL Server 数据库中检索数据并填充 Sheet1。但是,除非我关闭用户表单并重新打开它,否则文本框不会刷新。我已尝试将 UserForm1.Repain 作为 CommandButton Click 事件的最后一行,但它仍然无法正常工作。
好的,在我之前的评论的基础上,您可以执行以下操作来自动重新加载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
我不太明白...试图复制您的问题,但我没有问题。我使用了以下代码
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 的值。