• 締切済み

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

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

  • ikari
  • お礼率16% (5/30)

みんなの回答

  • NATCHI
  • ベストアンサー率43% (17/39)
回答No.5

リストボックスのMultiLineを"0"にして MouseDown と MouseUp の両方に 以下の記述をすれば解決します。 If Me.List1.ListIndex < 0 Then Exit Sub Me.List1.Selected(Me.List1.ListIndex) = False Clickイベントの中身は消してください。 一応前回と同じアドレスにサンプルがあります。

ikari
質問者

お礼

またまたサンプルありがとうございました。 でも、久々のZIPファイルでこの環境に UNZIP32.DLLが無かったので泣けました(笑) 実はここまではたどり着いてまして、なんとか これで勘弁してくれと言う感じで収めました。 しかし、これだとマウスの微妙な動きによって ドラックイベントが走るのか、連打してると ”チカッ”となるんですよね。そこは許容して 貰いました。

  • NATCHI
  • ベストアンサー率43% (17/39)
回答No.4

さらに追加です。 VB5のサンプルもアップしておきました。 あと、MultiSelectは設計時のみ変更可能です。 実行時に変更しようとするとエラーになります。 ひとつ気になったのが、選択状態とフォーカスの当たっている状態を間違えてはいないかという点です。 ・選択状態はリストボックスのアイテムが反転表示。 ・フォーカスの当たっている状態はアイテムの周りを罫線で囲っている。 フォーカスの当たっている状態のことを言っておられるなら、SetFocusで他のコントロールにフォーカスを移せば解消します(この時、選択状態は保持されます)

ikari
質問者

補足

サンプルありがとうございました。 質問した事を整理しますとですね、 選択時(クリック時)に、選択アイテムが 一瞬反転表示されるのが嫌なのです。 フォーカスがあるのも、少し嫌なのですが 優先順位としては”チカッ”っとなるのが 気になるのです。

  • NATCHI
  • ベストアンサー率43% (17/39)
回答No.3

補足です。 今回サンプルとしてアップしたのはVB6なので、VBPが開けないかも知れません。 frmファイルをテキストエディタで開いてプログラム部分を貼り付けて実行してみてください。

  • NATCHI
  • ベストアンサー率43% (17/39)
回答No.2

下記URLにサンプルを作ったので参考にして下さい。

参考URL:
http://pony.kk-noa.co.jp/~unsei/
  • NATCHI
  • ベストアンサー率43% (17/39)
回答No.1

クリックイベントで Me.List1.Selected(Me.List1.ListIndex) = False(ikariさんの言う List1.Selected(n)=False ) の記述はいいと思うのですが、 ListBoxのMultiSelectを 1-標準 あるいは 2-拡張 にすれば選択が解除されます。

ikari
質問者

補足

Multiselectプロパティーは設計時のみ設定可能なものですよね? クリックイベントで行なおうとすると実行時エラーもしくは コンパイルエラーになるのですが?? ちなみに設計時は2-拡張にしています。 何か良い裏技があるのですか? それでも、クリックした時点で選択状態にはなるので クリックの中でやったのでは駄目なのですが。。。

関連するQ&A

  • VB6.0 リストボックス

    VB6.0で3つのリストボックスに関連性を持たせたいと思っています。 Private Sub lstBox_Click() Dim intLstIndex As Integer intLstIndex = lstA.ListIndex If (lstA.Selected(intLstIndex)) Then lstB.Selected(intLstIndex) = True lstC.Selected(intLstIndex) = True Else lstB.Selected(intLstIndex) = False lstC.Selected(intLstIndex) = False End If End Sub 以上のように、どれか一つのリストボックスがクリックされたら他のリストボックスの同じ行がtrueになるようにしています。 しかしこれでは件数が増えた場合、選択された行が揃わなくなる場合があり非常に見栄えが悪くなります。 リストボックスでなくともかまわないのですが、このように三つの項目に関連性をもたせることはできませんでしょうか。

  • Access2000のリストボックスでスクロール

    Access2000のリストボックスについてご質問致します。 リストボックス上にマウスポインタを持って行ったとき、スクロールを有効にする(スクロールができる)ようにすることは可能でしょうか。可能な場合、その方法を教えてください。 現状、リストボックス内の任意のデータを選択してから出ないとスクロールできません。 宜しくお願い致します。

  • VBとリストボックス

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

  • エクセルデータの入力規則リストのスクロールバー長く

    エクセル データの入力規則で条件の設定で「リスト」を作成し、選択できるリストの数を20に設定した場合についてです。 この場合、セルを選択するとスクロールバーが表示されますが、選択時に開いた窓の中には登録した8のリストから選択できる様になっており、残りの12はスクロールバーによってスクロールさせなければ隠れて見えなくなっています。 そこで、これを全部表示させる方法はありますでしょうか。 よろしくお願い致します。

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

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

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

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

  • VB6.0のFleXGridのスクロールバー

    こんばんわ。 お力添えの方を宜しく お願い致します。 現在VB6.0でプログラミングを行っており、 FlexGrid(以下FG)の表示で困っています。 とあるデータがあり、 それを表示するためのFGのある画面があります。 一回に50件の表示を行います。 対象データが50件以上の場合は, <次頁ボタン>を押し、次の50件を表示します。 で、そのFGの表示領域は大体10件程度なので、 表示上はみ出ている部分のデータを見る為に FGにスクロールバーが設けてあります。 そのスクロールバーを、一番下まで動かして (一番下でなくとも、なんらか動かした状態) 次頁ボタンを押下すると、 スクロールバーは動かした状態のまま、 次の50件のデータが表示されます。 次頁ボタンを押下した時に、 スクロールバーを一番上の状態(デイフォルトの状態) に戻したいのですが何か方法は無いでしょうか?。 (例:真中くらいまでスクロールしてから、 次頁ボタンを押下すると、データは次の50件に   なるが、FGの表示領域自体は、真中くらいに   スクロールしたままになっているので、   データの表示が中途半端な感じがする &   解りづらい & 使いづらい ・・との事です) ちなみに、 FGを持っている画面自身を一度アンロードして・・・ 再表示という方法を試し、成功したのですが、 一旦画面が消えるため、そのさいの表示がちらつくというクレームのため、この方法は駄目になりました。 あと、FGをリフレッシュしても駄目ですし、 標準でもっているスクロールバーメソッドには どうやらそのようなコマンドは無いようです。 APIも調べてみたのですが、 僕の力不足なのか該当するようなモノは 発見できず、ほとほと困り果てて 今にいたります。 解りにくい質問で大変恐縮なのですが、 もし、方法をご存知の方がいましたら どうかご教授ください。

  • リストビューのスクロールバーについて

    いつもお世話になっております。 リストビューのスクロールバーについて教えて頂きたい事がございます。 ご教授よろしくお願いします。 リストビューにスクロールバーが表示されているのか?表示されていないのか?を判定する方法はありますか? よろしくお願いします。

  • VBA:水平スクロールバーが要らない!

    XP&Excel2000でVBAを組んでいるビギナーです。 その中でリストボックスを入れたいのですが、例えば、 4文字程度のテキストしかリストになく、 リストボックスの幅は十分それ以上のスペースがあるのに、 走らせてみると水平スクロールバーが表示されており、 additemで“テキスト”と追加したはずのデータが、まるで“  テキスト  ”と前後に余計なスペースが混じっているような感じになってしまいます。 これは一体何が原因でしょうか? また、リストボックスにはスクロールバーに関するプロパティが見当たりませんが、そもそもスクロールバーを直接設定することはできないのでしょうか? よろしくお願いいたします。

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

    エクセル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にカーソルをあて、グリグリしてもダメです。 どうしたら動くようになるのでしょうか?

専門家に質問してみよう