[[20050505072358]] 『ログを書き込むテキストボックスを作りたい』(バーミヤン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ログを書き込むテキストボックスを作りたい』(バーミヤン)
 先ほどはお世話になりました。再びわからないことが出てきましたのでご教授お願いいたしますm(_ _)m

 VBAでテキストボックスをつくり、そこに色々なプロシージャなどの動作に対してログを表示していくようにしたいのですが、
以下の件でどのようにしたらよいのかアドバイスをお願いします。

 1 テキストボックスは10行書き込める大きさに設定しています。
 2 ログは上から順に1行ずつ書き込むようにしたいです。
 3 10行目まで埋まったら、次のログが書き込まれるときは1行目のログが消え、2〜10行は1〜9行に改行され、新しいログは10行目に書き込まれるようにしたいです。

 現在やっている方法が、

 1 テキストボックスに何も書き込みがない場合はそのままログを書き込む
 2 テキストボックスに何か書き込みがあったら、「書き込み+改行+新しいログ」を書き込むようにしています。
   改行は "書き込み" & Chr(13) & Chr(10) & "新しいログ"を使っています。

 ただ、この方法だと10行目まできたときの判定ができません。
 どのようにしたらよいでしょうか?


 テキストボックスのプロパティで、MultiLine を True にしておけば、
 勝手に最後から10行が表示されませんでしょうか。

 文字列が何行かを知るには以下のようなことで算出できます。
 
    MyBeforeLen = Len(TextBox1.Text)
    MyText = Replace(TextBox1.Text, Chr(13) & Chr(10), "")
    MyAfterLen = Len(MyText)
    MyTextRow = (MyBeforeLen - MyAfterLen) / 2 + 1
    MsgBox "テキストの行数は " & MyTextRow & " 行です。"

 (川野鮎太郎)

 ありがとうございます。MultiLine=Trueでは10行を越えたらテキストボックスの範囲を越えて下に書き込まれてしまいます。
ですのでマウスで文字をドラッグして手動で行を下がっていかないと見えないんです。

 何行を知るかのプログラムは参考にさせていただきます。
 TextBox1に改行がなかった場合の条件分けもしないといけないですね。
 (バーミヤン)


 あら・・・、こちらでは出来たんですけどね。
http://skyblue123.hp.infoseek.co.jp/Excel/MyTextBox.xls

 他のプロパティも設定するのでしょうかね。
 見比べてみてください。

 (川野鮎太郎)

 お邪魔します。
多分、
.CurLineと
.LineCount
のことを仰ってるのだと思いますが、以下でどうでしょうか?
Option Explicit
Private Sub CommandButton1_Click()
With Me.TextBox1
    .SetFocus 'フォーカスがないとエラーになるのでフォーカスをセットします。
    .CurLine = .LineCount - 1  '.CurLineは「0」から始まるので-1します。
'    .CurLine = 0 '先頭に移動させる場合は「0」にします。
End With
End Sub
(SoulMan)


 川野さんわざわざ書いていただいてありがとうございます!
頂いたVBAではできますね・・・。たしかに最後の行まで自動でスクロールされていました。
しかし私のほうで作ったテキストボックスではスクロールしない・・・。
プロパティも同じですし、同じようにInisializeで入力するようにしてもダメでした。

 もう少し悩んでみます・・・(;-_-)
 (バーミヤン)

 SoulManさんまさにそのとおりでした・・・。ログへ書き込みしたらフォーカスしないといけないんですね。
フォーカスを設定したらうまくできました。ありがとうございます!(バーミヤン)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.