![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VB2005です
DataGridViewで
+ ヘッダ + 項目名1 + 項目名2 + 項目名3 + 項目名4 +
列の順序変更で
+ ヘッダ + 項目名3 + 項目名2 + 項目名4 + 項目名1 +
とした場合
i = DataGridView1.CurrentCell.ColumnIndex
Label1.Text = DataGridView1.Columns(i).HeaderText
としてヘッダ項目名を取得できましたが、
For x=0 to DataGridView1.ColumnCount - 1
として、セルの左から順番に項目名を取得するにはいかがしたらよろしいでしょうか?
コードでCurrentCellを移動する方法も合わせて教えて下さい。
また上記2行のコードをもっとスマートに書けないでしょうか?
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
No.1ベストアンサー
- 回答日時:
表示順を変更したところで、各列のIndex番号は保持されたままなので、左から順に~となるとDisplayIndexを参照することになります。
割と面倒くさいんだけど
'ヘッダ名とDisplayIndex(表示上のインデックス)を格納するテーブル作成
Dim dt As New DataTable
dt.Columns.Add("Header", GetType(String))
dt.Columns.Add("Disp", GetType(Integer))
'ヘッダ名とDisplayIndex(表示上のインデックス)を格納
For Each dgvCols As DataGridViewColumn In DataGridView1.Columns
dt.Rows.Add(dgvCols.HeaderText, dgvCols.DisplayIndex)
Next
'DisplayIndexで、データをソート
Dim dv As DataView = New DataView(dt)
dv.Sort = "Disp"
'ソートしたデータを頭から順にコンソールに出力
For Each drv As DataRowView In dv
Console.WriteLine(drv.Item("Header").ToString)
Next
こうやると左から順にヘッダ名が取得できます。
もっといい方法あるのかな?
●CurrentCellをコードで移動させる方法は、例えば
DataGridView1.CurrentCell = DataGridView1(1, 2)
とかになります。
また、
i = DataGridView1.CurrentCell.ColumnIndex
Label1.Text = DataGridView1.Columns(i).HeaderText
これをスマートに書くなら
Label1.Text = DataGridView1.CurrentCell.OwningColumn.HeaderText
となります。
CurrentCellを移動させる方法
DataGridView1.CurrentCell.OwningColumn.HeaderText
理解できました。
順序変更の方については、もっと簡単な一発で得る方法があるかと思ってましたが「う~~ん」残念です。
DelphiからVBに乗換えたばかりで、ちょっとつらいです。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 会計ソフト・業務用ソフト エクセルの表 2 2022/09/17 11:08
- Visual Basic(VBA) 重複データをまとめて合計を合算する 4 2022/10/25 20:25
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- その他(Microsoft Office) (至急)Googleのスプレッドシートの条件付き書式について 2 2022/09/11 08:50
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヘッダのinclude順
-
VBAでExcelのヘッダーに文字列+...
-
ヘッダーの記述方法<XX.h>と"XX...
-
Content-type: text/htmlが表示...
-
Ruby CGI HTTPヘッダ
-
リストコントロールの列幅を固...
-
SpreadDesignerの列ヘッダ
-
C言語でのOS判断について
-
[C#]ListView一覧表示時の幅設...
-
AccessVBAで「このフィールドに...
-
TCPヘッダのチェックサム算出方法
-
HTTPレスポンスヘッダとは?
-
LWPでのCookie取得
-
よくある 『 第○(1・2・3・4・...
-
エクセルで相対パスの書き方を...
-
月の第一週とは
-
毎○曜日って、使いますか?
-
エクセルで毎月第2週日の水曜日...
-
apacheでPerl CGIが作動せず、5...
-
週2回のペースって だいたい何...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでExcelのヘッダーに文字列+...
-
[C#]ListView一覧表示時の幅設...
-
perlでHTTP Request Headersの...
-
AccessVBAで「このフィールドに...
-
ヘッダのinclude順
-
TCPヘッダのチェックサム算出方法
-
関数ヘッダ?
-
Content-type: text/htmlが表示...
-
レスポンスヘッダの出力方法
-
file_get_contents でリダイレ...
-
LinuxでRTPヘッダを作りたいの...
-
リストコントロールの列幅を固...
-
EXCEL:ヘッダー日付を年号で?...
-
SpreadDesignerの列ヘッダ
-
LWPでHTTPSサイトからコンテン...
-
HTTP 200 OKの後のリダイレクト?
-
C# クッキーを使ってウェブブ...
-
ftpでのネットワークバイトオー...
-
HTTPヘッダの取得方法
-
自作ヘッダファイルについて (C...
おすすめ情報