tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトル'-1' の InvalidArgument=Value は 'Index' に対して有効ではありません
記事No13382
投稿日: 2009/01/29(Thu) 01:11
投稿者桃羽
はじめましてこんばんは 桃羽と申します

vbは専門学校の授業でちろりとやった程度です
visual basic2005でプログラムを作っています


手芸材料の単価や材料名を登録、編集するプログラムです

form4で全材料の名前、単価を別々のリストボックスの同じインデックスに表示
編集ボタンを押すとform6が出て単価、材料名が編集でき
編集完了ボタンクリックで材料名や単価をform6で編集した内容に沿ってform4の表示も変わるというものです
材料名をキーに利用するため、登録する際も材料名は重複しないようになっています


エラー内容↓
'System.ArgumentOutOfRangeException' の初回例外が System.Windows.Forms.dll で発生しました。
'-1' の InvalidArgument=Value は 'Index' に対して有効ではありません


                index = Form4.ListBox1.Items.IndexOf(goods)
                If TextBox1.Text <> goods Then
                    Form4.ListBox2.Items.Insert(index, TextBox2.Text)
                    Form4.ListBox2.Items.RemoveAt((index + 1))
                    Form4.ListBox1.Items.Insert(index, TextBox1.Text)
                    Form4.ListBox1.Items.RemoveAt(index + 1)
                Else
                    Form4.ListBox2.Items.Insert(index, TextBox2.Text)
                    Form4.ListBox2.Items.RemoveAt((index + 1))
                End If

                goods = TextBox1.Text
                MsgBox("編集しました", , "編集")


まずform6を開く際form4から受け取った材料名を変数goodsに保存します

材料名(textbox1)がgoodsのまま編集されていなければ、
form4のlistbox2(単価一覧)の、元々その単価が表示されていた部分に新しい単価を登録
その後、1つずれた元の単価をリストから削除しています。これがelseの部分

問題が出るのはif文に入ったときです
素材名が既に保存されている他の素材名と重複していないのを確認した上で
まずelseのとき同様、単価を登録、ずれた単価を削除した後、
同じ要領でlistbox1の元々その素材名があった位置に新しい素材名を追加し、ずれこんだ古い素材名を削除します。
   ⇒Form4.ListBox1.Items.RemoveAt(index + 1)
この行を記入すると最初に書いたエラーが出ます。
RemoveAtではなく、Removeで直接goodsに保存された元の素材名を削除しようとしても同じです
何故、ずれ込んだ素材名を削除できないのかがわかりません。

上手く書けなくて申し訳ありません
どなたか、エラー回避の為何かアドバイスいただけると助かります
よろしくお願い致します。

[ツリー表示へ]
タイトル注意事項をよく読んでから投稿を
記事No13383
投稿日: 2009/01/29(Thu) 07:10
投稿者花ちゃん
> visual basic2005でプログラムを作っています

初めにお読み下さい や 掲示板ご利用に際し をよく読んでから投稿願います。

まず、こちらはVB2.0〜VB6.0用の掲示板です。と 投稿画面の上部等他に書いて
あるのですが。

[ツリー表示へ]