データグリッドの列見出しソート禁止で

このQ&Aのポイント
  • VB.NET2003+Access2000環境でデータグリッドを使用してデータを入力している際、列見出しをクリックするとソートされてしまう問題が発生しています。
  • ソート禁止の設定を行った場合、複数行のデータでは問題ありませんが、一行だけの場合や入力途中の場合に入力データが消えてしまう問題が発生しています。
  • 一行だけや入力途中の場合でもソート禁止にする方法はないのか、どなたかご教示いただけないでしょうか?
回答を見る
  • ベストアンサー

データグリッドの列見出しソート禁止で

いつもお世話になります。 VB.NET2003+Access2000環境です。 データグリッドを使用してデータを入力しているのですが、ちょっと要望が出てきまして試したのですがうまくいきません。 お知恵を貸してください。 通常、複数行のデータがある場合、データを入力してから列見出しをクリックするとそれをキーにソートされますよね。 これを禁止するために datagrid1.AllowSorting = False を記述しました。 結果目的は達成されているのですが、データが1行だけの場合、しかも全ての列の入力が終わっておらない状態の時にどこかの列見出しに当たってしまうと入力データが消えてしまいます。 複数行あれば問題ないのですが、一行だけあるいは入力途中の時点でもソート禁止にする方法はないものでしょうか? よろしくお願いします。

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

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

こんばんは 以前の質問にコメントしたものですが、うまく動作しているようです。 ただし、VB2005なので外れているかもしれませんが悪しからず。 DataGridViewのcolumnsプロパティをクリックして 該当するカラムのSortModeをNotSortableに設定すればソートしません。

danchor
質問者

お礼

2003のDataGridをやめて、2005のDataGridViewに変更して、無事目的を達成することが出来ました。 ありがとうございました。

danchor
質問者

補足

sugao_chibさん コメントありがとうございます。 >DataGridViewのcolumnsプロパティ >該当するカラムのSortModeをNotSortableに 探してみたのですが、これにぴったりのも、似た機能の部分をも 見つけることが出来ませんでした。 2003と2005の違いかも知れません。 最近購入して2005も持っているので移植(というほどたいそうなものでもありませんが)を考えた方がいいのかも知れませんね。

関連するQ&A

  • エクセルでのソートについて

    エクセルで縦方向(複数列)にデータを入れていっているのですが、 その中の1つの列のデータを昇順とかでソートしたときに、 その列しかソートされません。 行単位で意味を持ったデータなので、 どこの列でソートしても行も追随してソートしたいのですが、 どうすればいいのでしょう?

  • エクセルのソートについてお尋ねします

    エクセルでソートを行う場合、データを行・列いずれにも入れて、ソートしたい場合、どのようにすればよろしいでしょうか?

  • Excel の見出し行と見出し列を固定するには?

    Excel2000 なのですが、例えば見出しがA列にあり、かつ、1行目も見出しの場合、スクロールしても見出しを表示するにはどうすればいいでしょうか? 現在1行目をスクロールしても固定表示する方法として以下の方法を使っています。 1.2行目を選択(反転) 2.メニュー「ウィンドウ」-「ウィンドウ枠の固定」 これですと、1行目は固定表示されるのですが、横スクロールさせるとA列が見えなくなってしまいます。 すみませんがよろしくお願いします。

  • Excel のデーター入力規則が別列でソート

    Excelで A列に日付け B列に仕入れ先 C列にその仕入れ先の主な品名などをデーター入力規則で覚えさせていますが、 仕入れ日の都合及び仕入れ先伝票到着日の都合で最後の行に 追加記入、及び仕入れ先をサーチしてまとめて数件記入してから、A列の日付順にソートすると表面の書かれた文字はそのまま各行で並び替えされますが、 データー入力規則は記入した時の行に残ったままの様で次に仕入れ先のデーター入力規則をしようとすると違う表示になっています。 この場合日付をソートした場合その行の(隠れている入力規則)データーも一緒に移動できない物でしょうか? よろしくお願いいたします。

  • TextBoxに入力された文字列のソート

    TextBoxに入力された文字列のソート TextBoxに入力された文字列のソート 開発環境:Visual Web Developer 2008 express 言語:Visual Basic TextBoxを縦5行横3列に並べた表形式の入力フォームがあり、1列目のTextBox(番号…1,4、7、10、13)に入力された文字列(数値)を基準に、昇順にソートし、行ごと入れ替えるプログラムを作りたいのですが、TextBoxを利用したソートの参考になるものが見つからず息詰まっています。どなたかサンプルや参考になるサイトがあれば、教えてください。 ###入力フォーム### 1  あああ あああ 3  ううう ううう 2  いいい いいい 5  おおお おおお 4  えええ えええ ###実際に出したい結果### 1  あああ あああ 2  いいい いいい 3  ううう ううう 4  えええ えええ 5  おおお おおお

  • オートフィルタを見出し行選択で不要な列まで▼がつく

    初めて質問します。goo41と申します。 過去ログも検索してみたのですが、出てこなかったので、質問させて いただきます。よろしくお願いします。 要旨としては、見出し行を選択し、オートフィルタをかけると見出し のない部分まで「▼」が表示されてしまいます。 例)     A     B     C     D     E  ┌───┬───┬───┬───┬───┐ 1│名前▼│年令▼│住所▼│   ▼│   ▼│  ├───┼───┼───┼───┼───┤   注)テキスト表なので表示上はずれているかもしれません。    見難いですが列がそろっているものとして見て下さい。 この例では、1:1という行の選択をして、オートフィルタをかけた 場合、A~Cだけでなく不要な列(DとE)にまで「▼」がついてしま います。  ※D列とE列のすべてのセルにはデータは何も入力されていま   せん。ただし、該当の列のどれかに過去、データを入力した   ことはあります。既に消去済み。 オートフィルタをかけるときに、A1:C1を選択すれば不要な列に は「▼」はつかないのですが、複数のシートで汎用的なマクロを作成 したいと思っており、できれば、行選択→オートフィルタで、必要な 見出しのところだけに「▼」がつくようにしたいのです。 というのも自分だけで使うのであればよいのですが、人(初心者)に渡 す必要があるため、できれば不必要な表示は避けたいと考えているか らです。 DとE列をすべてクリアしてみたり、列削除してみたりしたのですが、 一度でも、その列のどこかのセルに入力した経緯があれば、必ずその 列までに「▼」がついてしまうのです…。 これはExcelのバグなんでしょうか? どなたか解決策がありましたら、よろしくお願いいたします。

  • エクセル 複数列選択して一列にソートできますか?

    エクセル 複数列選択して一列にソートできますか? sheet1 A1~G10 のセルに文字列(名前)がランダムに入力されているとします。空白もあります。このデータは他ファイルからコピーしたものとします。これをsheet2のA列にソートすることはできますか?

  • エクセルの見出しのヘルプについて

    エクセルに以下のようなヘルプがあるのですが、何度読んでも理解できません。どのようなケースでこの方法をつかうのでしょうか?またどのような利点があるのでしょうか。 よろしくお願いいたします。 各ページに印刷タイトルが印刷されない 行や列の見出し (ラベル) が入力されているページにだけ、印刷タイトルが印刷されます。たとえば、行見出しとしてセル A1:A5 を選択すると、行 5 より下の行だけが印刷されるページには行見出しが印刷されません。また、列見出しとしてセル A1:E1 を選択すると、列 E より右の列だけが印刷されるページには列見出しが印刷されません。これらのページに見出しを印刷するには、行または列の見出しをコピーします。 追加の行に行見出しをコピーする 行見出しとして印刷するセルを選択し、 (コピー) をクリックします。 行見出しが入力されていない、同じ列のセルを選択し、 (貼り付け) をクリックします。 [ファイル] メニューの [ページ設定] をクリックし、次に [シート] タブをクリックします。 [列のタイトル] ボックスをクリックし、行見出しを入力した列全体を指定します。たとえば、列 A のセルにコピーした行見出しを各ページに印刷するには、「$A:$A」と入力します。 追加の列に列見出しをコピーする 列見出しとして印刷するセルを選択し、 (コピー) をクリックします。 列見出しが入力されていない、同じ行のセルを選択し、 (貼り付け) をクリックします。 [ファイル] メニューの [ページ設定] をクリックし、次に [シート] タブをクリックします。 [行のタイトル] ボックスをクリックし、列見出しを入力した行全体を指定します。たとえば、行 1 と行 2 のセルにコピーした列見出しを各ページに印刷するには、「$1:$2」と入力します。

  • エクセルのソートの繰り返し作業について

    こんにちは いつもお世話になっています。 エクセルでソートの繰り返し作業のショートカット、あるいはマクロを教えてください。 例えば、同一シート内のデータで、1-10行までを選択してソートします。 最優先される列はNo.1がC列でNo.2がA列です。 この条件のソートを別の複数行で複数回行うので「データ」-「並べ替え」等の手順をカットしたいのです。 2003でのショートカットのCtrl キーを押しながら Y キーを押すことでは対応していないようです。 2007ではクイック アクセス ツールバーの (繰り返し) も対応していないようです。 最初は手作業で、次からは該当行の選択後に同一条件でのソートができるマクロがあればいいのではないかとおもうのです。 2003と2007で使えるものをご紹介いただけると助かります。 よろしくお願いします。

  • エクセルのソートのマクロ

    エクセルでのソートのマクロを教えてください。  範囲選択は手動でその都度変更します。優先列、昇順は変更ありません。 例えば、AからE列までデータがあり、第一優先列をD列、第二優先列をA列として、それぞれ昇順でソートします。 範囲はその都度手動で複数行を全列選択します。 つまり、適宜、複数行を選択してからこのマクロを実行すれば常に先の形式でソートできるようにしたいです。  わかりにくい記述で恐縮ですがよろしくお願いします。

専門家に質問してみよう