2011-07-07 9 views
4

msアクセスで作成されたmdbファイルがあります。フォームの内部と内部に1つの大きなテキストボックスがあります。テキストボックス付きの自動スクロール

このテキストボックスを作る意図はテキストボックス内のメッセージを追加することによって、いくつかの作業の進行状況を表示することです:

txtStatus.value = txtStatus.value & "Doing something..." & vbCrLf 
txtStatus.value = txtStatus.value & "Done." & vbCrLf 

しかし、問題は、テキストボックスのテキスト>高さの高さ、です、新しいメッセージは自動的に表示されません。テキストボックスにはスクロールバーがありますが、手動でスクロールする必要があります。新しいテキストがポップアップするたびに、自動的に下にスクロールしたいと思います。

私は上の変更プロパティに(インターネットからコピーされた)このコードを追加しようとしましたが、コードは失敗し、それは何もしません:

Private Sub txtStatus_Change() 
    txtStatus.SelStart = Len(txt) - 1 
End Sub 

私はこれを達成するためにいくつかのシンプルで美しい方法があることを望みます。 Windowsプラットフォームのカーネル/ etcに依存しているため、一部のコンピュータでのみ動作するコードを追加したくありません。

+2

上のテキストボックスのデザインとのトラブルは、それがフォーカスを失うとすぐとして、それは(テキストの先頭の表示に戻りますということです終わりとは対照的に)。これは私が心配している限り、設計上の欠陥です。コントロールには、テキストコンテンツの上部/下部を表示するかどうかをデザイナーが指定できるプロパティが必要です。 –

答えて

12

サブコールを使用して実行できます。

AppendText "Bla de bla bla." 
. 
. 
sub AppendText(strText As String) 
    with txtStatus 
     .setfocus '//required 
     .value = .value & strText & vbNewLine 
     .selstart = len(.Value) 
    end with 
end sub 
+0

大丈夫です。ありがとう。 – lamwaiman1988

+0

はすぐに使えます – avguchenko

+0

ユーザが矢印キーを使用したときに問題を避けるために '.selength = 0'とする必要があります。 –

-1

は単にlinefeed後に次のコードを入れたりChange event txtStatus

txtStatus.SelStart = Len(txtStatus) - 1 
関連する問題