好きな「お肉」は?

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

どうか、よろしくお願いします。

A 回答 (2件)

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
といった具合です
すべてのリストボックスの項目数が一致しているならばですが
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/23 21:24

VScroll1.Maxの設定をちゃんとしたのでしょうか?



Form_LoadイベントなどのListBoxの項目を初期化した後で
VScroll1.Max = List(0).ListCount - 1
として初期設定しないといけませんよ

Maxプロパティは 32767まで設定可能です

ListBoxの TopIndexは登録されているリスト項目の数-1までが設定可能値です
リスト項目の数をあらわすプロパティが ListCountになります
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/24 18:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A