リストボックスに縦スクロールバーと選択

このQ&Aのポイント
  • VB初心者必見!リストボックスの使い方と縦スクロールバーの設定法を解説します
  • リストボックスの選択状態を他のリストボックスに反映させる方法とは?初心者でもわかる解説
  • リストボックスに縦スクロールバーを追加し、スクロール時にリストを自動的に更新する方法をご紹介
回答を見る
  • ベストアンサー

リストボックスに縦スクロールバーと選択

VB初心者です。よろしくお願いします。ちょっと教えて頂きたいのですが、リストをコントロール配列にして例えばList(1)の何行目かをクリック(選択)したらList(0)とList(2)の同じ行に選択状態をうつしたいのですがどうやったらいいのでしょうか?それから縦スクロールバー(VScroll)とリストの配列をどうして連結したらいいのかわかりません。スクロールしたらリストが最後の行までうごいてくれるには?ご教授頂けないでしょうか?ちなみにListのなかには500行ぐらいあります。 List(0) List(1)  List(2) 縦スクロールバー ------------------------------     xxxxxx xxxxxxxx  xxxxxxx        xxxxxx xxxxxxxx  xxxxxxx        -----------------------------    どうか、よろしくお願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VBのバージョンやエディションなどを明記しましょう VB6などなら ListBoxのClickイベントで処理します Private Sub List_Click(Index as Integer)   ' 再帰防止用フラグ   Static sFlag = Boolean   if sFlag then exit Sub   sFlag = True   dim n as Integer   n = List( index ).ListIndex   Select case Index   case 0     list(1).ListIndex = n     list(2).ListIndex = n   case 1     list(0).ListIndex = n     list(2).ListIndex = n   case 2     list(0).ListIndex = n     list(1).ListIndex = n   end select   sFlag = False End Sub VScrollとの連動は Scrollイベントで Private Sub VScroll1_Scroll()   dim vIndex as Integer   vIndex = VScroll1.Value   List(0).TopIndex = vIndex   List(1).TopIndex = vIndex   List(2).TopIndex = vIndex End Sub FormのLoadイベントで Private Sub Form_Load()   VScroll1.max = List(0).ListCount - 1 End Sub といった具合です すべてのリストボックスの項目数が一致しているならばですが

googoo2839
質問者

お礼

早速のご回答ありがとうございます。回答どおりプログラムを書いたら うまく動作しました。ありがとうございます。ただ縦スクロールバーを下まで動かすと、Scrollイベントで行が500行になると「プロパティの値が不正です」とでるのですが、あれは値が500以上になるとでるものなんでしょうか?時間があればご教授お願いします。 ちなみにVB4.0です。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

VScroll1.Maxの設定をちゃんとしたのでしょうか? Form_LoadイベントなどのListBoxの項目を初期化した後で VScroll1.Max = List(0).ListCount - 1 として初期設定しないといけませんよ Maxプロパティは 32767まで設定可能です ListBoxの TopIndexは登録されているリスト項目の数-1までが設定可能値です リスト項目の数をあらわすプロパティが ListCountになります

googoo2839
質問者

お礼

すいません、設定忘れてました。設定しましたらうまく動作しました。 いやーさすが専門家です。本当にありがとうございました。

関連するQ&A

  • VBのリストボックスでのスクロールバーについて

    VB5で5件のデータ表示サイズをもつリストボックスに 10件のデータを設定した場合にスクロールバーが表示 されますが、この画面を参照モードとして使用したい場合に List1.Enabled=False としました。しかし、この方法だとスクロールバーも 非活性となり、5件以降のデータが参照出来なくなります。 非活性にせず、参照モードの場合にはクリックイベント内で List1.Selected(n)=False Exit Sub をして操作出来ない様にしました。しかし、これだと リストボックスを選択した際に一瞬選択状態になってしまいます。 選択状態にしない方法、もしくは非活性のままスクロール出来る 方法を知っている方がいましたら、御教授下さい。

  • リストコントロールのスクロールバーを操作無効にするには

    お世話になります、fujicafeと申します。 現在、VC++でMFCのダイアログベースのアプリケーションを作成し、そこでリストコントロールを配置させています。 リストコントロールは自動的に垂直方向のスクロールバーを表示させるようにしています。 そこで質問なのですが、現在、リストコントロールの垂直方向のスクロールをスクロールバーの操作ではなく、キー操作によって行おうと思っているのですがどのようにすればスクロールバーの操作を無効にできますでしょうか? ポイントとしては ・リストコントロールの自動的に表示させる垂直スクロールバーはそのまま表示させたい(スクロールバーは全体行での現在の行の位置を示すだけ) ・リストコントロールの垂直方向の移動はキー操作でしたい。 これを実現するには、やはりリストコントロールのスクロールバー表示を無しにし、別でスクロールバーを設置させるしか方法はないでしょうか? 現状で、キー操作でのリストコントロールのスクロールバーの操作は実現できていますので、出来ればリストコントロールのスクロールバーの操作の無効のみが出来ればいいなと思っております。 ご意見がありましたら、よろしくお願いいたします。 尚、開発環境は Windows CE 6.0 Visual Studio 2005 です。

  • Win32のリストコントロールで縦スクロールはできませんか?

    こんにちは。Win32のリストコントロールについて質問です。 リストコントロールでアイコン表示で使用しています。 リストコントロールでアイコンをたくさん表示させると、縦幅に入る範囲で アイコンが複数行表示され、入らないアイコンは横スクロールさせることで 表示できますが、これを縦スクロールベースにはできないものでしょうか ?

  • リストボックスをクリックしたときにスクロールバーが勝手に動いてしまう

    vb2008で開発を行っています。 チェックボックスつきのリストボックスのチェックボックスをクリックしたときに、フォーム全体のスクロールバーが自動的にリストボックスに合わせて動いてしまい、非常に使いづらく、見づらいです。 この自動操作を無効にはできないでしょうか?どなたか回答をお願いします。

  • エクセルの縦のスクロールバーのカーソルが長くなってしまって困っています・・・

    最初は、行が6万行もあったので、縦スクロールが使いにくく1000行を残して、『表示しない』にしました。行数は減ってよかったのですが、縦スクロールキーがなぜかスクロールバーのほとんどいっぱいいっぱいの長さになってしまい困っています。 スクロールキーの長さを短くする方法を教えてください。

  • VBとリストボックス

    こんにちわ。 いまVB6.0sp5でリストボックスに チェックボックス付きのリストを表示し, クリックで複数選択するロジックを組んでいます。 リストに表示するデータ件数がリストボックスの高さを超えるため, 横スクロールさせる必要があります。 そこで,2列目のキャプションをクリックすると, スクロールし,選択した行以外のチェックボックスが見た目, 消えてしまいます。 なお消えたチェックボックスの箇所をクリックすると, その行のチェックボックスが選択された状態で表示されます。 2列目のキャプションをクリックしたときに,ほかの行のチェックボックスを 消さないようにしたいのですが, どうすれば良いでしょうか? 教えてください。 宜しくお願いします。

  • Excelで、縦スクロールのバーが小さくなり使いに

    Excelで、縦スクロールバーが、小さくなってしまい非常に使いにくくなってしまいます。 不要な行を削除し、保存をして再度起動をするとできると他で書いていましたが、保存をしてもできません。 すごく不便ですので、宜しくお願いします。

  • Okwaveで縦スクロールバーが表示されません

    読み込み途中ではスクロールバーが表示されているのに、 読み込みが完了した途端縦スクロールバーが消えてしまい、 ページの下部を見ることができません。 IEの設定リセットをして再起動しても変わりません。 Okwaveの質問一覧では大丈夫なのに、 質問をクリックすると縦スクロールバーが消えます。 原因あるいは対処法を教えてください。

  • リストボックスのスクロールバーをマウスで動かしたい

    エクセル2007です。 Sheet1のA列に 1行目から順に 1 2 3 4 5 6 7 8 9 10 といれました。 ユーザーフォームを新規作成し、リストボックスを設置しました。 VBAコードは、 Private Sub UserForm_Initialize() Me.ListBox1.RowSource = "Sheet1!a1:a10" End Sub にしました。 VBE画面でF5を押して、フォームを表示させるとリストボックスにスクロールバーが表示されますが、 フォームをクリックして、マウスホイールでぐりぐりしても、リストは動きません。 画像のように、4にカーソルをあて、グリグリしてもダメです。 どうしたら動くようになるのでしょうか?

  • Excel 縦スクロールバーでデータが動かない

    お世話になります。 PC:lenovo X61 OS:XP Excel:2000 【質問内容】 エクセルのスクロールバーについて質問がございます。 縦スクロールバーを左クリックしながら、上下動をすると、 連動してエクセルの行データも一緒に動く筈なのですが、 データが動きません。 左クリックを離すと、該当行のデータまで移動される感じです。 ScrollLockがされている訳ではありませんし、 ウィンドウ枠の固定も関係ないようでした。 エクセルの設定なのか、OS側の設定なのか、 分からないまま非常に困っています。 どなたかご教授をお願い致します。

専門家に質問してみよう