FOR 〜NEXTループ内で変わりゆく 値をテキストボックスに反映させたい

解決


AKI  2004-08-01 15:21:01  No: 84867  IP: [192.*.*.*]

FOR NEXT ループでIの値を順次表示したいのですが
実行すると1000の表示で終了します。

これを1,2,3.....と表示させるにはどうすれば良いのでしょうか?

N88-BASICなら、なんてことなかったことですが、
VBを始めることになり、いきなりつまずいています。
いきなり登場で恐縮ですが、ご教示ください。

お願いします。

Private Sub Command1_Click()
Dim I As Long

Text1.Text = 0

For I = 1 To 1000
Text1.Text = I
Next

End Sub

編集 削除
魔界の仮面弁士  2004-08-01 17:16:33  No: 84868  IP: [192.*.*.*]

強いて書くなら、「Refreshメソッド」を挟んで、このようになりますが……
PCの性能によっては、やはり一瞬の間に終わってしまうと思います。(^_^;)

Option Explicit
Private Sub Command1_Click()
    Dim I As Long
    Text1.Text = "0"
    For I = 1 To 1000
        Text1.Text = CStr(I)
        Text1.Refresh
    Next
End Sub



変化しているのがわかるようにするなら、Timerコントロールを使う事もできます。

Option Explicit

Private Counter As Long

Private Sub Command1_Click()
    Timer1.Enabled = True
End Sub

Private Sub Form_Load()
    Counter = 0
    Timer1.Enabled = False
    Timer1.Interval = 55
End Sub

Private Sub Timer1_Timer()
    Counter = Counter + 1
    Text1.Text = CStr(Counter)
    
    If Counter >= 1000 Then
        Timer1.Enabled = False
        Counter = 0
    End If
End Sub

編集 削除
Toshihiko  2004-08-01 21:42:00  No: 84869  IP: [192.*.*.*]

それって、もしかしてこういうことですか?

Private Sub Command1_Click()
Dim I As Long

Text1.Text = 0

For I = 1 To 1000
Text1.Text = Text1.text & "," & I
Next

End Sub

編集 削除
AKI  2004-08-02 17:58:23  No: 84870  IP: [192.*.*.*]

魔界の仮面弁士さん、Toshihiko ありがとうございます。

魔界の仮面弁士さんのコードを参考にしてやってみたらうまくいきました。

実際にはループの中にGP-IBボードのI/Oを組み込んでいて、刻々と変わるデータを表示させています。

ただ、Option Explicitを宣言すると、実行時にいろいろな変数で、エラーを巻き起こすので、結局  Option ExplicitとText1.Text = CStr(I)を抜いてみました。

Refreshのみで試したところうまくいきました。(いいのだろうか??)

Option ExplicitとText1.Text = CStr(I)のことが気になりますが、
自身でまた調べてみます。


本当にありがとうございました。

編集 削除
AKI  2004-08-02 22:52:04  No: 84871  IP: [192.*.*.*]

とりあえず、解決マーク付けます。
Toshihikoさん。呼び捨てごめんなさい。

編集 削除
nanashi  2004-08-03 10:52:44  No: 84872  IP: [192.*.*.*]

> ただ、Option Explicitを宣言すると、実行時にいろいろな変数で、エラーを巻き起こすので、
> 結局  Option ExplicitとText1.Text = CStr(I)を抜いてみました。

それは変数を宣言していないからです。
Option Explicitを使用しないと変数を宣言せずに使用できます。
一見便利に思えますが、スペルミスとか変数のスコープ範囲が分かりにくくなります。
コンパイル時に簡単に発見できる単純なバグが見つけにくいバグになってしまいます。
Option Explicitを宣言し、変数を自分で宣言する癖を付けるべきです。

編集 削除
AKI  2004-08-03 12:00:15  No: 84873  IP: [192.*.*.*]

nanashi さん有り難うございます。
>Option Explicitを宣言し、変数を自分で宣言する癖を付けるべきです。
はい。
確かに変数の宣言が、いい加減になっている感は否めません。
肝に銘じてコードを書くことにします。

編集 削除