重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBをはじめて2週間の新人です。よろしくお願いします。

早速質問させていただきたいのですが、
データグリッドに入力した列の値(複数)をすべて比較するというプログラムを作りたいのですがどうすればいいのかわかりません。

たとえばデータ列に[A][B][C][D][E]・・・という風にどんどん入力されていき、その値を比較、[A]=[B],[A]=[C],[A]=[D],[A]=[E],
[B]=[C],[B]=[D],[B]=[E]・・・・
という感じですべての値が同一にならないよう(同一の場合はエラーを発生)にしたいのです。

ループを使うのだろうなぁとはおもうのですが、うまくいきません。
お助けいただけますでしょうか、よろしくお願いします。

A 回答 (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データをある列に書き出します。比較のステップはこれ以上少なくは出来ません。上は基本形で、変形はいろいろに可能です。
    • good
    • 0
この回答へのお礼

ありがとうございます、教えていただいた内容を変形させて比較できました。

お礼日時:2008/01/18 11:48

コントロールは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
    • good
    • 0
この回答へのお礼

ありがとうございます。
記述いただいた内容を参考に値を比較することができました。

お礼日時:2008/01/18 11:50

入力時にチェック・・・はダメなのかな?

    • good
    • 0

VBにもいろいろなバージョンが存在します


VB5.0/6.0、 VB.NET2002/2003、VB2005/2008
WindowsアプリなのかWebアプリなのか
データの確定はいつするのか ... キー入力時に随時行うのか、ボタンなどでチェックイベントがあるのか
エラーの発生方法 ... メッセージボックスで再入力を促す、文字の色を変更して再入力を促す、セルの移動ができないようにする

現在やっている処理があるならそのコードを提示してみましょう

この回答への補足

redfox63より指摘がありましたので補足させていただきたいとおもいます。
使用しているバージョンはVB2005です。
WINDOWSアプリでボタンを押したときに重複している内容が無いかチェックしたいとおもっています。
重複データがある場合にはその旨のメッセージを表示し、処理を中断させ、元の入力画面に戻りたいとおもいます。

補足日時:2008/01/18 10:34
    • good
    • 0

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