
先日より取り組んでいる顧客検索プログラムですが、combobox1でササキを選ぶとcombobox2には北海道、combobox3には札幌市と表示させたいと思います。先日もアドバイスをいただきそれを参考にすすめていますが、「'0' の InvalidArgument=Value は 'SelectedIndex' に対して有効ではありません。 パラメータ名: SelectedIndex」というエラーが出てしまいどうしても解決出来ません。このエラーの後さらにデバッグすると思ったとおりに動作するのですが、エラーを解決するにはどう対処すると良いのでしょうか?下記が現在のソースとなります。どうかアドバイスをお願い致します。
ササキ,北海道,札幌市,
スズキ,東京都,あきる野市,
サトウ,愛知県,名古屋市,
ハヤシ,北海道,旭川市,
が TextFile1.txtです。
Imports System.IO
------------
Public Class Form1
Private Sub Form1_Load(省略~
Dim fn As String = "C:\TextFile1.txt"
Dim read As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(fn, System.Text.Encoding.Default)
Dim dline() As String
Dim namelist As ArrayList = New ArrayList()
Dim adr1list As ArrayList = New ArrayList()
Dim adr2list As ArrayList = New ArrayList()
dline = Split(read.ReadToEnd, vbCrLf)
Dim srcary() As String
Dim i As Integer
For i = LBound(dline) To UBound(dline)
srcary = Split(dline(i), ",")
namelist.Add(srcary(0))
adr1list.Add(srcary(1))
adr2list.Add(srcary(2))
Next
ComboBox1.DataSource = namelist
ComboBox1.SelectedIndex = -1
ComboBox1.Text = "名前"
ComboBox2.DataSource = adr1list
ComboBox2.SelectedIndex = -1
ComboBox2.Text = "住所1"
ComboBox3.DataSource = adr2list
ComboBox3.SelectedIndex = -1
ComboBox3.Text = "住所2"
End Sub
-------------
Private Sub ComboBox1_SelectedIndexChanged(省略~
If ComboBox1.SelectedIndex > -1 Then
ComboBox2.SelectedIndex = ComboBox1.SelectedIndex
Else
ComboBox2.Text = ""
End If
End Sub
No.1ベストアンサー
- 回答日時:
デバッグの基本は何が原因でエラーとなるか、どこまでは正常に動いているか、を付きとめる事です。
1行ずつブレークポイントを設定してステップ実行していけば、理由が判るようになっていきます。下記行が
ComboBox1.DataSource = namelist
実行された後、
Private Sub ComboBox1_SelectedIndexChanged(省略~
この↑イベントが実行され、結果としてエラーになっています。
エラー行は↓ですね。
ComboBox2.SelectedIndex = ComboBox1.SelectedIndex
つまり、ComboBox2には何も選択肢が設定されていないのに、SelectedIndex = 0 を指定しようとした為に発生しているのです。
このことから、ComboBox1_SelectedIndexChanged イベントは、選択肢を追加しようとする際にも走る事が判りますね。
対処方法としては、フラグを用意して、ComboBox への選択肢初期設定中は、イベント内の処理を無視することです。たとえば次のような感じになります。
Public Class Form1
Dim bFormLoad As Boolean = True '■追加
Private Sub Form1_Load(省略~
(各処理)
bFormLoad = False '■Form1_Load 内の最後に追加
End Sub
Private Sub ComboBox1_SelectedIndexChanged(省略~
If bFormLoad Then Return '■追加
If ComboBox1.SelectedIndex > -1 Then
ComboBox2.SelectedIndex = ComboBox1.SelectedIndex
Else
ComboBox2.Text = ""
End If
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
このQ&Aを見た人はこんなQ&Aも見ています
-
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
Loadイベント中にほかのイベントを発生したくない
その他(プログラミング・Web制作)
-
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
-
4
CloseとDisposeの違い
Visual Basic(VBA)
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
VBの画面サイズについて
Visual Basic(VBA)
-
7
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
8
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
9
textboxユーザーコントロールのコピー&ペースト制御
Visual Basic(VBA)
-
10
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
11
VS 2008(VB.NET)
Visual Basic(VBA)
-
12
PreviewKeyDownイベントが2回発生する
Visual Basic(VBA)
-
13
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
14
クリックするたびに、フォームが複数表示される
Visual Basic(VBA)
-
15
VB6からVB2010への変換について
Visual Basic(VBA)
-
16
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
17
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
18
SQLサーバー接続 特定のPCがWindows認証出来ない
SQL Server
-
19
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
20
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
お助けください!VBAのファイル...
-
UserForm1.Showでエラーになり...
-
【VBA】ワークブックを開く時に...
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
String""から型'Double'への変...
-
【VBAエラー】Nextに対するFor...
-
「実行時エラー '3167' レコー...
-
Excel vbaについての質問
-
インポート時のエラー「データ...
-
VB.net 重複チェックがしたいです
-
実行時エラー 438 の解決策をお...
-
ApplicationとWorksheetFunctio...
-
Nullの使い方が不正ですのエラ...
-
エクセル 足し算引き算で 空...
-
オブジェクト型の変数にフォー...
-
VBA Find でオートメーションエ...
-
マクロOn Error GoTo ErrLabel...
-
VBA データ(特定値)のある最...
-
助けてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
文字列内で括弧を使うには
-
マクロで"#N/A"のエラー行を削...
-
Excel vbaについての質問
-
VBA データ(特定値)のある最...
-
On ErrorでエラーNoが0
-
ApplicationとWorksheetFunctio...
-
【Access】Excelインポート時に...
-
インポート時のエラー「データ...
-
実行時エラー 438 の解決策をお...
-
オブジェクト型の変数にフォー...
-
.VBSだとADODBのプロバイダが見...
-
実行時エラー'-2147467259(8000...
-
【VB.NET】 パワポ操作を非表示で
-
フランスの生年月日(jj/mm/aaaa)
-
【VBAエラー】Nextに対するFor...
おすすめ情報