2012-05-08 15 views
0

ControlSourceプロパティがSheet1のセルに設定されているさまざまなテキストボックスを持つユーザーフォームがあります。コマンドボタンもあります。ControlSourceセルの変更時にExcel UserFormテキストボックスが更新されない

CommandButtonをクリックすると、SQL Serverデータベースからデータが取得され、Sheet1が読み込まれます。ただし、ユーザーフォームを閉じてから再度開いていない限り、テキストボックスはリフレッシュされません。私はCommandButton Clickイベントの最後の行としてUserForm1.Repainを試しましたが、まだ動作していません。

+0

だけの推測ができますが、コントロールソースプロパティを再割り当てしようとしたがありますか?私。それを取り出して再適用してください。 #MightWork – markblandford

+0

これはうまくいきますが、100個以上のテキストボックスが別のセルにバインドされているため、コードをすべて更新する必要はありません。 – NiMuSi

答えて

1

OK、私の以前のコメントを踏まえ、フォーム上の各テキストボックスの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 
+0

それは素晴らしいです、それはうまく動作します。 – NiMuSi

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の値を更新します。

+0

私のコードはデータをワークシートに正しく戻しています。私が抱えている問題は、ユーザーフォームにユーザーに表示することです。これは私がディスプレイに使用しているコードです:txtSurname.ControlSource = "Sheet1!B2" txtTitle.ControlSource = "Sheet1!C2" txtFirstForename.ControlSource = "Sheet1!D2" txtOtherForenames.ControlSource = "Sheet1!E2" など(100以上のテキストボックス用)。設計時にControlSourceプロパティを設定する必要がありますが、これは必要ありませんが、動作していないようです。 – NiMuSi

関連する問題