• ベストアンサー

初心者)DataGridViewの入力桁数を制限したいのですが

VB2005でDataGridViewのカラムの値の入力桁数を制限しようと思っているのですが、最大桁数はプロパティから制限かけることはできましたが、最小桁数の制限はできるのでしょうか?自分なりに調べてみたのですが、見つけられなかったのでご存知の方、お願いします。 今やろうとしているのは、1つのカラムの値が指定桁以下の場合には次のセルにフォーカスを移すことができないような仕組みを作ろうとしています。 どなたか初心者でも分かるようなやり方をご存知な方、教えてください!

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

例えば桁未満ならエラーの場合は、下のようではどうでしょうか? Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating If Not DataGridView1.Rows(e.RowIndex).IsNewRow Then '新しいレコードの行ならチェックしない If e.FormattedValue.ToString.Length < 5 Then '5文字未満なら e.Cancel = True 'キャンセル End If End If End Sub ちなみに、列ごとに違う場合は、e.ColumnIndexで現在の列がわかるようです。

limelite
質問者

お礼

レス遅くなってすいません。 上記のコードを試したところ問題なく解決しました! コードもとても分かりやすくて私にも理解できました。 ありがとうございました^^

関連するQ&A

  • DataGridViewの桁数制限に関して

    VB2008 DataGridViewを用いて開発を行っていますが、そのDataGridViewのある列だけ 入力の桁数制限を掛けたいと考えています。 数字のみしか受け付けない方法等はHP上で検索できたものの、やはり桁数制限 だけは調べられませんでした。。。 あるHPより、以下のような記述も見つけましたが、この場合だと数字が打ちこめて しまいます。 そもそも打ちこめる桁数も制限をかける方法はないでしょうか、、、 教えて下さい。 Private Sub DataGridView1_CellValidating・・・・ If e.FormattedValue.ToString.Length < 5 Then '5文字以上の場合 e.Cancel = True 'キャンセル End If よろしくお願いします。

  • DataGridViewで…

    初めまして、VB2005初心者のココと申します。 今、VB2005を使い開発しているのですが、詰まってしまいました。 初心者の為、くだらない内容かも知れませんが、ご教授よろしくお願いいたします。 セルに入力されたコードを元にDBから名称を抽出し、名称欄(セル)に表示するプログラムを作っています。 コードを入力し、セルからフォーカスが無くなった際に自動的に名称を表示させたいのですが、うまく表示されず、 現在は、別のセルから戻った後、フォーカスが移動されると表示されるような感じになってしまっています。 フォーカスが離れた際に、表示させればいいと思うのですが、どのようにすればいいのかよく分からず困っております。 今は、CellLeaveを使用しています。 Private Sub DataGridView1_CellLeave(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) _ Handles DataGridView1.CellLeave 後、名称取得の際はこんな感じにしています。 名称取得(Val(DataGridView1(1, DataGridView1.CurrentCell.RowIndex).Value)) ※1がコードを入力する列になります。 よろしくお願いいたします。

  • DataGridView 列ごとの入力制限

    VB2005環境です。 DataGridViewコントロールの、列ごとに入力制限をかけたいと 思っています。 たとえば、1列目は数字のみ入力可能、2行目は半角英数字…と いった具合です。 また、できればある列にはIMEMODEを設定してやりたいとも 思っています。 KeyDownイベントで、列の名前ごとにif文をかまして、文字を弾けば いいかと思っていたのですが、思ったより手間で、コピペでの入力 には対応できません。 プロパティでなんとかならないかと思ったのですが、デザイナからは そのようなものは見つかりませんでした。 何かシンプルに入力制御をかけられる方法はないでしょうか? ご教授お願いいたします。

  • DataGridViewでコードで値を入力したい

    VB2005のDataGridViewですが、行と列を指定して そのセルに値を入力したいと思いますが、どのプロ パティに行番号・列番号を入れればいいのでしょうか?

  • 有効桁数について

    ある数値を5回測定したとします A 5.039 B 5.075 C 5.092 D 5.064 E 5.058 有効桁数はすべて4桁ですよね? 次にA~Eの平均を取ると (A+B+C+D+E)/5=5.0656 と関数電卓で結果がでますが、4桁に丸めて5.066とすれば有効桁数の扱い方としては問題ないですか? そしてA~Eの平均の2乗をするときは、上記の平均を有効桁数4桁に丸めた5.066を2乗して (5.066)^2=25.664356 となり、そして5.066の有効桁数4桁に合わして25.66とすればいいのでしょうか? それとも平均の値を4桁に丸める前の電卓で出た値のまま2乗した後、最終的に4桁に丸めるのがいいのでしょうか?この数値だとどちらでやっても4桁にした値は変わりませんが・・・ 有効桁数の扱い方で問題があったら教えてください、また平均の2乗を求めるときはどちらが正しいのでしょうか? (平均の値の2乗は平均×平均なのだから平均の値を4桁にせず5桁として計算すると平均の2乗は有効桁数5桁と考えるので、やはり正しく平均の値を測定値の有効桁数4桁に丸めて出した平均の値を2乗する方が正しいですかね・・・)    また、上記の平均の計算をしたときのよな、「5」などの数字の有効桁数は何桁ですか?1桁なんでしょうか?もし1桁なら割り算をしているので有効桁数はいちばん桁数の少ないものに合わせるので有効桁数1となると平均の値が「5」となりおかしいとおもうんですが・・・ 上記の平均を取ったときの「5」や、測定回数の数値や、測定していない数で100で割れと書いてあったりしたときは、それらの数字の桁数も考えなければならないんでしょうか? 読みづらい文章かもしれませんが、ご回答待っています。

  • 【C#】DataGridViewの最大列数について

    DataGridViewで、数万件規模のデータを表示させたいと考えています。 (希望としては、100万件できれば良いのですが、、、) 行(column)数は、3桁になると考えています。 んー、、、、がんばれば、2桁も可能かもしれません。 DataGridViewの最大表示可能列数は何列(Row)になるのでしょうか?

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

  • VBでの入力値制限について

    はじめまして。 VBのテキストボックスに値を入力していき、ある桁数になるとメッセージを表示する仕組みを作りたいと考えています。 例えばVBで用意したテキストボックスにキーボードで123と入力しキーボードの4を押した直後に「桁数は3桁までです。」というメッセージを表示したいのですがいい方法を教えていただけないでしょうか? 自分で以下のように作ってみたのですがこれだとキーボードで123と入力し次に4を入力した時にテキストボックスに4が表示されてからエラーが出ます。そうではなく4をテキストボックスに表示させずに4をおしたら以下のメッセージが出るようにしたいのです。 よろしくお願い致します。 Private Sub text1_Change() If Len(text1.Text) > 3 Then MsgBox "桁数は3桁までです。", vbOKOnly + vbInformation, "情報" End If End Sub

  • DataGridViewで入力チェック後、フォーカスをあてたい

    お世話になります。 現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。 DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。 よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。 仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。 入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。 どなたか心当たりがあれば教授願いたいです。 よろしくお願いいたします。

  • DataGridViewのカーソル

    VB 2005を使っています。 DataGridViewを初期化した際に、ディフォルト状態ではカーソルが先頭行の 先頭カラムに移動します。 またその背景色が青っぽい色となっています。 ここで希望なんですが、カーソルは先頭行、先頭カラムに移動しても構わない のですが、背景色を白っぽい色にしたいのです。 つまり、カーソルがあろうとなかろうと、各行、セルを同一色にしたいのです。 いろいろ調べてみましたが、やりかたがわかりませんでした。 ご存じの方はよろしくアドバイスお願いいたします。

専門家に質問してみよう