アプリ版:「スタンプのみでお礼する」機能のリリースについて

TextBoxのChangeイベントを使って、
テキストボックスの数値をコンボボックスに反映させる
(具体的には数値をコンボボックスのindex数にし、それぞれのindexに
アニメ+str(i)としたいです。
しかし、後で書くソースは何故か、コンボボックスが
アニメ1
アニメ0
アニメ1
アニメ2
アニメ3

となってしまいます。
これを
アニメ0
アニメ1
アニメ2
アニメ3

としたいです。どうすればいいんでしょうか?

Private Sub Text8_Change()
Static p As Integer

If Text8.Text = "" Then Exit Sub

For i = 0 To p
If p = 0 Then GoTo b
If Form6.Combo1.NewIndex = -1 Then GoTo b
Form6.Combo1.RemoveItem (i)
Next i
b:
For i = 0 To Val(Text8.Text)
Form6.Combo1.AddItem "アニメ" + str(i)
Next i
p = Val(Text8.Text)
End Sub

A 回答 (2件)

RemoveItem (i)


は、どこまで削除したいですか?
全件削除してよいなら、
Form6.Combo1.ListCountで件数拾えるので、
Forループを件数まわしますか。

Private Sub Text8_Change()
 Static p As Integer
 Dim nCount as Ineteger

 MsgBox "処理を開始する時点で、pの値は" & p & "だよ”

 'でも、なぜここでIF文? 処理がここで終わりますね
 If Text8.Text = "" Then Exit Sub

 MsgBox "処理を進めるよ”

 MsgBox "削除前の時点でコンボの件数は”& Form6.Combo1.ListCount & "だよ"

 If p <> 0 Then
  nCount=Form6.Combo1.ListCount
  For i = nCount To 0 step -1
   If Form6.Combo1.NewIndex <> -1 Then
    Form6.Combo1.RemoveItem (i)
   END IF
  Next i
 END IF

 MsgBox "削除後の時点でコンボの件数は”& Form6.Combo1.ListCount & "だよ"


 p = Val(Text8.Text)
 For i = 0 To p
  Form6.Combo1.AddItem "アニメ" + str(i)
 Next i

 MsgBox "追加後の時点でコンボの件数は”& Form6.Combo1.ListCount & "だよ"

End Sub
    • good
    • 0
この回答へのお礼

bin-chanさん、回答ありがとうございます。
上記のソースを改造したら、うまくいきましたが、
やはり、
アニメ0
アニメ0
アニメ1
アニメ2
アニメ3

といった感じの動作でした。

ところで、
VB6のウェブサイトでコンボボックスのメソッドを調べていたら、
Combo1.Clear
という命令がありました。
これで、上手くいきました。
どうやら、難しく考えすぎていたみたいでした。

Private Sub Text8_Change()
Static p As Integer
Dim nCount As Integer

MsgBox "処理を開始する時点で、pの値は" & p & "だよ"

'でも、なぜここでIF文? 処理がここで終わりますね
If Text8.Text = "" Then Exit Sub

MsgBox "処理を進めるよ"

MsgBox "削除前の時点でコンボの件数は" & Form6.Combo1.ListCount & "だよ"

Form6.Combo1.Clear


MsgBox "削除後の時点でコンボの件数は" & Form6.Combo1.ListCount & "だよ"


p = Val(Text8.Text)
For i = 0 To p
Form6.Combo1.AddItem "アニメ" + str(i)
Next i

MsgBox "追加後の時点でコンボの件数は" & Form6.Combo1.ListCount & "だよ"

End Sub

お礼日時:2010/03/05 17:50

試験できる環境でないので、以下のコードで再実行してみて。




Private Sub Text8_Change()
 Static p As Integer

 If Text8.Text = "" Then Exit Sub

 If p <> 0 Then
  For i = p To 0 step -1
   If Form6.Combo1.NewIndex <> -1 Then
    Form6.Combo1.RemoveItem (i)
   END IF
  Next i
 END IF

 p = Val(Text8.Text)
 For i = 0 To p
  Form6.Combo1.AddItem "アニメ" + str(i)
 Next i

End Sub

この回答への補足

bin-chan様、回答ありがとうございます。

しかし、コンボボックスには、
アニメ0
アニメ0
アニメ1
アニメ2
アニメ3
アニメ4

と表示されてしまいました。
先頭のアニメ0がなくなればいいのですが、上手くいきませんでした。
なお、text8.textのtextのプロパティには、""が入っています。

補足日時:2010/03/04 20:53
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!