お世話になります。
現在VB2005で開発中なのですが、DataGridViewの処理で躓いております。
DataGridViewには「氏名」「住所」「生年月日」を入力できるようにしており、全ての項目において入力必須としています。
よって、どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。
仮に「氏名」が空白で、次の行の任意セルをクリックした場合、RowValidatedイベントで各セルに対し入力チェックを行い、メッセージを表示させた後にCurrentCellを空白だったCellにし、さらにEditModeで編集可能状態にすればいいと考えていたのですが、結果は最後にクリックした任意セルにフォーカスが移ってしまいます。
入力チェックを発生させるイベントに問題があるのか、カレントセルにフォーカスを当てる処理で問題があるのかで悩んでいる状態です。
どなたか心当たりがあれば教授願いたいです。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
>これはフォーカスを当てずに、メッセージで対処する方法と考えてよろしいでしょうか?
他のセルに移動しようとした時(フォーカスを失った時)にチェックをしてます。
不正ならメッセージを出してフォーカスの移動をキャンセルしてます。
>どれか一つでも入力がなかった場合はエラーメッセージを表示させ、メッセージ表示後に該当項目のセルにフォーカスをあてたいと考え、ロジックを組んでおります。
と言う事だったので、行ではなく1セル単位で、
CellValidating:セルが入力フォーカスを失い、内容の検証が有効になった場合に発生します。
でチェックをして、今回はどのセルでも空白だったらe.cancel=trueでフォーカスを戻しています。
「エラーメッセージを表示させ」とあるので、エラーメッセージを出してます。
Select Case e.ColumnIndex
Case 0
Case 1
Case 2
End Select
でもよかったんですが、メッセージは列見出しを使っています。
No.3
- 回答日時:
こんなのではどうでしょうか?
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 = 0 Then '空白なら
MsgBox(DataGridView1.Columns(e.ColumnIndex).HeaderText & "は必須です") '列ヘッダを表示
e.Cancel = True
End If
End If
End Sub
fumufumu_2006さん、ありがとうございます。
これはフォーカスを当てずに、メッセージで対処する方法と考えてよろしいでしょうか?
なるべくならエラー個所をすぐに直させたいので、フォーカスで対処したかったのですが・・・方法がなければ上記の方法で対処したいと考えております。
ありがとうございました。
No.1
- 回答日時:
CellValidatedイベントでは駄目でしょうか?
unamana19さん、ありがとうございます。
CellValidatedイベントやRowLeaveイベントでも試みましたが、結果は同様でした。
カレントセルを指定(チェック対象セル)し、イベント処理内でMsgBoxで確認した段階では、指定したセルのアドレスが表示されたのですが、イベントを抜けてしまうとクリックしたセルに戻ってしまいます。
どこかでクリックしたセルのアドレスを保有していて、イベントを抜けた後にそちらを優先してしまうのでしょうか・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) WORKDAY関数 4 2023/06/08 13:23
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) 【EXCEL】=セル&セルが上手く表示できない。 7 2022/09/04 21:32
- その他(Microsoft Office) (至急)Googleのスプレッドシートの条件付き書式について 2 2022/09/11 08:50
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
DataGridViewのフォーカス遷移について
Visual Basic(VBA)
-
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
CellEnterイベント仕様について
Visual Basic(VBA)
-
5
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
6
DataGridViewで指定したセルの値を取得
Visual Basic(VBA)
-
7
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
8
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
9
VB.NET2005 TextBox 高さ(Height) 変更
Visual Basic(VBA)
-
10
データグリッド内の数値をカンマ区切りで表示
Visual Basic(VBA)
-
11
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
12
VB.NET DataGridView 縦スクロールバーを常に表示
Visual Basic(VBA)
-
13
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
14
VB2005 DataGridView上でクリックを無効にする方法はありますか?
Visual Basic(VBA)
-
15
DataGridViewの桁数制限に関して
Visual Basic(VBA)
-
16
DataGridViewでグリッド内に線を引きたい
Visual Basic(VBA)
-
17
DataGrdViewに関連付けたデータの更新
C言語・C++・C#
-
18
.NET上でエクセル上に罫線を引く
Visual Basic(VBA)
-
19
DataGridViewの特定列に入力されている重複チェックをしたい
Visual Basic(VBA)
-
20
C# DataGridView特定セルの入力フォーム変更について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SPREAD(GrapeCity)のセルにフォ...
-
C#でButtonのフォーカス枠を消...
-
メッセージボックスを前面に表...
-
Chrome フォーカス時に枠が表示...
-
DAMのデンモクの使い方
-
初期フォーカスについて
-
iPhoneのクイックアクションを...
-
コンボボックスの三角を一時的...
-
tabキーによるフォーカスをさせ...
-
レーザのスポット径の計算式
-
P900iVとFOMAの質問
-
3DS いつの間に交換日記
-
トリニトロン管TVと普通のブ...
-
Delphiで最前列にFormを表示し...
-
Sendkeyでステップイン不能?
-
Eclipse Javaエディタでの選択...
-
MN128miniVでキャッチホンの設...
-
Unityのピンボールゲーム製作
-
TDSマジックランプシアター 箱...
-
初期状態でのフォーカスの解除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを前面に表...
-
SPREAD(GrapeCity)のセルにフォ...
-
C#でButtonのフォーカス枠を消...
-
Excelのマクロで実行時エラー”1...
-
TDSマジックランプシアター 箱...
-
Chrome フォーカス時に枠が表示...
-
iPhoneのクイックアクションを...
-
レーザのスポット径の計算式
-
コンボボックスの開いたリスト...
-
コンボボックスの三角を一時的...
-
DAMのデンモクの使い方
-
PowershellでCLIとISEの結果が違う
-
除光液の正しい捨て方がわかり...
-
初期状態でのフォーカスの解除
-
雷のようなアニメーションをウ...
-
DataGridViewで入力チェック後...
-
フォトショのアクションを別のM...
-
至急です。 トイレに行きたいな...
-
MMDでAVI出力後の映像、音声に...
-
VC++でマウスホイールイベント...
おすすめ情報