• ベストアンサー

リストボックスの中に表示されている、項目を並べ替えたい

リスト2に5~6個の項目が入っている(表示されている) とします、イメージとして ---------------- aaa ccccc bbb eeeeeee yyyyy ---------------- bbbという項目が、上から3番目にあります これを、2番目(aaaと cccccの間)に移動したいのです 方法としては、bbbを選択し 「上」というコマンドを押すと、bbbが上に移動します これができたら、同様に「下」のコマンドも作りたいのですが ACCESS2003を利用しています

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

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

#1の方が同タイミングで同じような回答をされたので、「投稿する」をクリックするのを躊躇してしまいました。 コードを頭の体操代わりに作ってみましたのでアップします。 エラー処理は全く考慮していませんが、#1の方の仕様通りなら正しく動作します。 フィールド1 はリストに表示するフィールドです。 フィールド2 もリストに表示するフィールドですが、列幅は 0 にします。 リストは値集合ソースで フィールド2 で昇順設定を予めしておきます。 (このコードがご理解できれば逆のコードはご自分で作成できると思います。) Private Sub 上_Click() Dim SeqNo As Long Dim i As Long Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset If Me!リスト.ListIndex <= 0 Then Exit Sub SeqNo = Val(Me!リスト.Column(1)) i = Me!リスト.ListIndex Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset 'Rs.CursorLocation = adUseClient Rs.Open "テーブル1", Cn, adOpenKeyset, adLockOptimistic 'Rs.Sort = "フィールド2 ASC" Rs.Find "フィールド2 = " & SeqNo Rs!フィールド2 = 0 Rs.Update Rs.MoveFirst Rs.Find "フィールド2 = " & SeqNo - 1 Rs!フィールド2 = SeqNo Rs.Update Rs.MoveFirst Rs.Find "フィールド2 = " & 0 Rs!フィールド2 = SeqNo - 1 Rs.Update Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing Me!リスト.Requery Me!リスト.SetFocus Me!リスト.ListIndex = i - 1 End Sub

maaaa
質問者

お礼

丁寧にありがとうございました 理解度がそのレベルに達してなく 返事に躊躇してしまいました つまり はっきりわかった、段階でお礼を言おうと思って ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.1

リストボックスに表示する項目がテーブルを使ってなら出来ます。 テーブルのフィールドは表示する項目と順位を入力するフィールド 例えば 項目   順番(数値型フィールド) aaa     1 ccccc    2 bbb     3 eeeeeee   4 yyyyy    5 のような構成にして作り 上位に変更するなら リストボックスで選択されたレコードの順番を取得し-1した順番のレコードの順番を+1でUPDATEし選択されたレコードの順番を-1してUPDATEしてリストをRequeryすれば良いと思いますが。 選択をしたレコードの順位を1度違う他と重複しない数値に更新させておいてから処理すれば良いのではないでしょうか。 下位に変更するなら逆の発想で

maaaa
質問者

お礼

ありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • リストボックス項目の順番を入れ替える方法

    リストボックス内に10個ほどの項目があります。 ある項目を選択し、ボタンAをクリックすると、その項目が1つ上に移動し、 ボタンBをクリックすると、その項目が1つ下に移動するようにしたいのです。 ウグイス ホトトギス フラミンゴ ↓ フラミンゴを選択し、ボタンAをクリックします。 ↓ ウグイス フラミンゴ ホトトギス 使用ツールはVB.NET2003です。 テキストファイルから読み込んだデータをリストボックスに入れ、順序を入れ替えてから、上書き保存しようとしております。 何か良いアイディアありましたら、是非教えてください。 どうぞよろしくお願いします。

  • Excel:既入力項目をドロップダウンリストに(入力規則?)

    Excelで、 ある列に簡単な文字列を入力していっているのですが、 それまでに同じ列で入力したのと同じ内容を入力する際に、 ドロップダウンリストを使いたいと思っております。 入力リストとも思うのですが、内容が固定でなく、 新たな内容を入力したら、それもリストで 使えるようにしたいです。 (例) AAA (空白) (空白) BBB (空白) CCC (空白)     ←ここを入力するときに、      AAA・BBB・CCCから選択またはDDDを手入力     ←上でDDDを入力していたらAAA・BBB・CCC・DDDから選択      そうでなければAAA・BBB・CCCから選択 以下ずっとこんな感じ(新項目を入力したら以後それもリストに入ってほしい) このような場合、どのように設定したらよいのか、 お分かりの方がいらっしゃいましたらご回答ください。

  • エクセルのリストボックスの使い方

     WindowsXP Pro エクセル2003です。  エクセルのコントロールボックス機能を使ってリストボックスをつくりました。  リストボックスからある項目を選択するとアクティブセルにそのデータが入るようにしています。(ActiveCell.Value = ListBox1.Value)その後、セルは下に移動させます(Selection.Offset1,0).Select)。  そこで、もう一度同じ項目を入力するために上のセルと同じ項目をクリックしてもその項目が入力されません。 コントロールボックスのアクションは、リスト内の「他の項目をクリックしたとき」に実行されるということで、同じ項目は続けて指定できないようになっているようです。そこで、ある項目をクリックしたら、リスト項目内で違うところに選んだリストの場所を移動させたいと思っているのですが、そういうことができるのでしょうか。  ご存じの方よろしくお願いします。

  • リストボックスで表示

    例えばhtmlページに [ID、名称(text)]、[あ、い(リストボックス)] があってID,名称を入力して(その下に3つぐらい項目があって) リストボックスで「う」、「え」 と二つあり「う」を選択したら本かパソコンを入力できるようにでき、 「え」と選択したら同じように選択できるようにはどうしたらいいですか。 なお表示されるページはリストボックスの中を変えたら表示される (同じhtml内で) 本を選択したらID,名称,本(リストボックス)であとは見えなくする(Focus)にはどうしたらいいですか もしかしてこれってjavascriptじゃないとできない?

  • ListViewの項目を入れ替える

    C++で詳細表示のリストビューを扱うプログラムを書いているのですが あるボタンを押すと選択した項目が上や下に移動するようにしたいんです そのためには選択した項目とその上下の項目を入れ替えたらいいと思うのですが やり方がわかりません ListView_SortItemsマクロを使ってみましたが、ある二つの項目だけを入れ替えるのは できなさそうです。 MFCを使わない方法があればうれしいです

  • リストボックスの値の再表示

    こんにちは! リストボックスを選択した後に、submitボタンを押して同一 ページに飛んだ際に、選択したリストボックスの値を表示させたい (一番上の値に戻ってしまいます。) のですがどのようにすれば可能でしょうか? ちなみにリストボックスはAccessをADO接続しています。

  • プルダウンかリストボックス

    携帯のブログの項目で プルダウン か リストボックス を設置したいのですが、どうもうまくいきません。 リストは作れても選択ボタンがうまく作れなかったり、 選択しても移動しなかったりしてしまいます。 HTMLの方式で書いているのですが、何度も考えてやっているのですが、結局リンクに飛ばなかったりしてしまいます。 どなたか教えてください。

  • ドロップダウンで「aaa」を選択したら表示では「A」としたい。

    こんにちは。 ドロップダウンリストで困っています。 入力規則から、ドロップダウンリストを作成しています。 リストの中身(元の値)はaaa,bbb,cccとしているのですが、 プルダウン中と、選択後や他のセルにカーソルが移動した時の表示を変化させたいのです。 aaaを選択→A bbbを選択→B cccを選択→C どなたか教えていただけるかたがいましたら、 よろしくお願い致します。

  • エクセル2013のリストボックス

    エクセル2010でワークシート上に配置したリストボックスがあります。 ActiveXではなくフォームコントロールのリストボックスです。 これに11項目のリストを設定してあります。 2010ではまったく問題がないのですが、エクセル2013で開くと下の2項目が選択できません。 2010と2013では互換性がないのでしょうか?

  • 選択項目移動処理(リストボックス)

    表題の件で、ご質問があります。 excel2003で、VBAのユーザフォームを使っております。 リストボックスが二つあり、左の項目を選択したら右の項目にその選択した値が移動する処理をしたいのですがまったくできません。 <処理内容> ・リストボックス1の内容 りんご text メロン トマト 上記で、りんごをダブルクリックするとリストボックス1とリストボックス2の内容は以下になります。 <選択後結果> ・リストボックス1 text メロン トマト ・リストボックス2 りんご このようにダブルクリックしたらりんごは消えてリストボックス2に移動します。 また逆の処理もしたくたとえばこの状態でリストボックス2を選択したらりんごがリストボックス1に戻る。 <処理内容> ・リストボックス2 りんご ・リストボックス1 text メロン トマト リストボックス2をダブルクリックすると以下のようになります。 ・リストボックス2 ・リストボックス1 りんご text メロン トマト このようになります。 上記二点の処理がしたいと思います。 どなた様か御教授頂けないでしょうか? お手数お掛けしますが宜しくお願いします。

専門家に質問してみよう