- ベストアンサー
値の比較方法
VBをはじめて2週間の新人です。よろしくお願いします。 早速質問させていただきたいのですが、 データグリッドに入力した列の値(複数)をすべて比較するというプログラムを作りたいのですがどうすればいいのかわかりません。 たとえばデータ列に[A][B][C][D][E]・・・という風にどんどん入力されていき、その値を比較、[A]=[B],[A]=[C],[A]=[D],[A]=[E], [B]=[C],[B]=[D],[B]=[E]・・・・ という感じですべての値が同一にならないよう(同一の場合はエラーを発生)にしたいのです。 ループを使うのだろうなぁとはおもうのですが、うまくいきません。 お助けいただけますでしょうか、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
VBって要するにbasic、私だとデータを格納するのにdimensionを使います。 DATA1(100), ERR(100) という風に定義します。数字か文字かは$の有無などで分ける必要があります。 データ列を読み取っていき、DATA1に入れていきます。入れたデータの数をIMAXと定義します。 比較は、 FOR I=1 TO IMAX-1 FOR J=I+1 TO 100 IF DATA1(I)=DATA1(J) THEN ERR(J)=1 NEXT NEXT このERRデータをある列に書き出します。比較のステップはこれ以上少なくは出来ません。上は基本形で、変形はいろいろに可能です。
その他の回答 (3)
- redfox63
- ベストアンサー率71% (1325/1856)
コントロールはDatGridなのかDataGridViewなのかどちらでしょう? DataGridViewならば Sub Button1_Click(引数省略) dim n as intger, m as integer, v as integer m = DataGridView1.CurrentCell.ColumnIndex '入力データがIntegerと仮定 適宜修正してください v = CType(DataGridView1.CurrentCell.Value, Integer) ' 現在の行の左端のセルから右端までなめる for n = 0 to DataGridView1.CurrentRow.Cells.Count-1 ' 現在選択されているセル以外をチェック if n <> m then if DataGridView1.CurrentRow.Cells(n).value = v then ' 重複データが見つかったのならそのセルを選択して ' Forループを抜ける DataGridView1.CurrentCell = _ DataGridView1.CurrentRow.Cells(n) exit for end if end if next End Sub
お礼
ありがとうございます。 記述いただいた内容を参考に値を比較することができました。
- unamana19
- ベストアンサー率62% (56/89)
入力時にチェック・・・はダメなのかな?
- redfox63
- ベストアンサー率71% (1325/1856)
VBにもいろいろなバージョンが存在します VB5.0/6.0、 VB.NET2002/2003、VB2005/2008 WindowsアプリなのかWebアプリなのか データの確定はいつするのか ... キー入力時に随時行うのか、ボタンなどでチェックイベントがあるのか エラーの発生方法 ... メッセージボックスで再入力を促す、文字の色を変更して再入力を促す、セルの移動ができないようにする 現在やっている処理があるならそのコードを提示してみましょう
補足
redfox63より指摘がありましたので補足させていただきたいとおもいます。 使用しているバージョンはVB2005です。 WINDOWSアプリでボタンを押したときに重複している内容が無いかチェックしたいとおもっています。 重複データがある場合にはその旨のメッセージを表示し、処理を中断させ、元の入力画面に戻りたいとおもいます。
お礼
ありがとうございます、教えていただいた内容を変形させて比較できました。