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

このQ&Aに関連する最新のQ&A

A 回答 (5件)

リストボックスのMultiLineを"0"にして


MouseDown と MouseUp の両方に
以下の記述をすれば解決します。

If Me.List1.ListIndex < 0 Then Exit Sub
Me.List1.Selected(Me.List1.ListIndex) = False

Clickイベントの中身は消してください。
一応前回と同じアドレスにサンプルがあります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/01/29 13:56

さらに追加です。


VB5のサンプルもアップしておきました。

あと、MultiSelectは設計時のみ変更可能です。
実行時に変更しようとするとエラーになります。

ひとつ気になったのが、選択状態とフォーカスの当たっている状態を間違えてはいないかという点です。
・選択状態はリストボックスのアイテムが反転表示。
・フォーカスの当たっている状態はアイテムの周りを罫線で囲っている。
フォーカスの当たっている状態のことを言っておられるなら、SetFocusで他のコントロールにフォーカスを移せば解消します(この時、選択状態は保持されます)

この回答への補足

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

補足日時:2001/01/25 10:16
    • good
    • 0

補足です。


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

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



参考URL:http://pony.kk-noa.co.jp/~unsei/
    • good
    • 0

クリックイベントで


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

この回答への補足

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

補足日時:2001/01/18 14:57
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q他フォームのチェックボックスを参照した条件付書式

OS WinXP
ACCESS 2000


■[フォームA]にチェックボックスを設置して
条件付書式にてチェックボックスのONで任意フィールドに色を点けています。
※チェックボックスは連結チェックボックスです。

 条件付書式の式 [チェックボックス名]=True

この方法で問題なく[フォームA]の任意のフィールドに色を点けることはできました。


■ここからが質問です。

この[フォームA]に設置してあるチェックボックスがONの時
[フォームB]に設置してある非連結テキストボックスにも色を点けたいです。
※[フォームA]に設置したチェックボックスは、どのレコードがONの状態でも
[フォームB]のテキストボックスに色を点けたいです。

目的は
[フォームA]の任意フィールドに重要なコメントが入力されている場合
[フォームB]を開いている時に一目で分かる様にしたいので…。

一応、[フォームB]の非連結テキストボックスに
条件付書式の式に
 [Forms]![フォームA名]![チェックボックス名]=True
としましたがうまくいきませんでした…。


※フォームは[フォームA][フォームB]ともに単票形式です。



宜しくお願い致します。

OS WinXP
ACCESS 2000


■[フォームA]にチェックボックスを設置して
条件付書式にてチェックボックスのONで任意フィールドに色を点けています。
※チェックボックスは連結チェックボックスです。

 条件付書式の式 [チェックボックス名]=True

この方法で問題なく[フォームA]の任意のフィールドに色を点けることはできました。


■ここからが質問です。

この[フォームA]に設置してあるチェックボックスがONの時
[フォームB]に設置してある非連結テキストボックスにも色を点けたいです。
...続きを読む

Aベストアンサー

No.1です。
まず、前回の補足から(汗)

背景色(BackColor)プロパティを使用する場合は、フォームAのチェックボックスの
更新後だけでなく、フォームAの「開くとき」イベント(または「読み込み時」イベント)
でも、同様のコードが必要でしたので、こちらを使う場合はご注意下さい。
(前回の回答のみだと、開いただけでは背景色が正しく表示されず、チェックボックス
を更新して初めて反映されることになります)

※コード内で「DCount("*", "tbl", "CheckBox=True") > 0」としていましたが、
  これは「DCount("*", "テーブル名", "[フィールド名]=True") > 0」の誤記です。
  失礼致しました(テスト時のコードのCopy&Paste後、修正し忘れました)。


> [フォームA]である任意の顧客(顧客ID)が表示された状態で、
> 設置されている任意のチェックボックスがONの場合、
> 同じ顧客(顧客ID)が表示されている[フォームB]を開いたときに、
> [フォームA]で入力されたどのレコード(日付)に関係なく任意の
> テキストボックスに色を点けたいです。

この場合は、「チェックボックスがTrue」という条件に加えて、「顧客IDがフォームAのそれと
一致」という条件を満たすものをカウントすればよい、ということになるので、DCount関数
の第3引数に、その条件([顧客ID]=[Forms]![フォームB]![txt顧客ID])を追加します。
(今回の件では「双方の条件を同時に満たすもの」の確認となるので、「And」で接続)

<現在>
 DCount("*","テーブル名","[フィールド名]=True") > 0
<修正>
 DCount("*","テーブル名","[フィールド名]=True And [顧客ID]=[Forms]![フォームB]![txt顧客ID]") > 0

※テーブル上のフィールド名が「顧客ID」、フォームB上で顧客IDを表示しているテキスト
  ボックスの名前が「txt顧客ID」の場合です。
  (どちらも同じ「顧客ID」という名前なら、「txt顧客ID」は「顧客ID」でOK)

No.1です。
まず、前回の補足から(汗)

背景色(BackColor)プロパティを使用する場合は、フォームAのチェックボックスの
更新後だけでなく、フォームAの「開くとき」イベント(または「読み込み時」イベント)
でも、同様のコードが必要でしたので、こちらを使う場合はご注意下さい。
(前回の回答のみだと、開いただけでは背景色が正しく表示されず、チェックボックス
を更新して初めて反映されることになります)

※コード内で「DCount("*", "tbl", "CheckBox=True") > 0」としていましたが、
  これは「...続きを読む

Qaccess リストボックス 全選択する方法

accessで、リストボックスの内容を全選択する方法はありますか?

Shift+クリックで出来ればよいのですが・・・

よろしくおねがいします。

Aベストアンサー

ポロパティ[複数選択]=拡張

で Shift を押せば選択できます。

ただ、1個だけを 選択する場合と全部を選択するという2つの操作を提供したのならば・・・。
DblClick を<無条件の全選択>にするのが一番簡単です。

Private Sub リスト0_DblClick(Cancel As Integer)
  Dim I As Integer
  Dim N As Integer
  
  N = Me.リスト0.ListCount - 1
  For I = 0 To N
    Me.リスト0.Selected(I) = True
  Next I
End Sub

Qフィルタでデータを選択して、データが0件の場合印刷しない

エクセルのシートで、フィルタでデータを選択して、データが0件の場合印刷しないマクロはどのような記述ですか

Aベストアンサー

(例データ)A1:B7
値1値2
asas
dfdf1
ghghs
hjhj
ghghs
opsss
(条件)A10:B11
値1値2
ghghs
(コード)
Sub test01()
Range(Cells(1, "A"), Cells(7, "B")).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range(Cells(10, "A"), Cells(11, "B")), _
CopyToRange:=Range(Cells(13, "A"), Cells(20, "B")), _
Unique:=False
If Cells(14, "A") = "" And Cells(14, "B") = "" Then
MsgBox "該当なし"
Else
MsgBox "該当あり"
'Range(Cells(10, "A"), Cells(20, "A")).PrintOut
End If
End Sub
(結果)A13:B15に
値1値2
ghghs
ghghs
範囲指定は実際の場合、適当に修正してください。
結果、「該当あり・なしのサイン」や「件数を返す」と言うのはないようなので、答えがセットされるべきセルの値ををチェックするより他ないのではと言うのが結論です。

(例データ)A1:B7
値1値2
asas
dfdf1
ghghs
hjhj
ghghs
opsss
(条件)A10:B11
値1値2
ghghs
(コード)
Sub test01()
Range(Cells(1, "A"), Cells(7, "B")).AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range(Cells(10, "A"), Cells(11, "B")), _
CopyToRange:=Range(Cells(13, "A"), Cells(20, "B")), _
Unique:=False
If Cells(14, "A") = "" And Cells(14, "B") = "" Then
MsgBox "該当なし"
Else
MsgBox "該当あり"
'Range(Cells(10, "A"), Cells(20, "A")).PrintOut
...続きを読む

Q非連結のリストボックスに特定フィールドのテーブルの内容を表示させる

Access2003で、フォームに非連結のリストボックスがあるのですが、ここにテーブルの特定のフィールド2つを表示させたいのですが、どうすればよいのでしょうか?

テーブルには、以下の4つのフィールドがあるのですが、名前と年齢のみを
リストボックスに表示させたいです。

no 連番
name 名前
age 年齢
sex 性別

どのように設定すればよいのでしょうか?

Aベストアンサー

NO1です。
>値集合タイプをテーブル/クエリにし、値集合ソースにクエリを書けば、2つのフィールドを表示させることはできると思いますが、

クエリを作らなくてもできるとおもいますが?
慣れていれば、直接非連結のリストボックスの、プロパティで設定を変更すれば、出来ると思いますが、不安であれば、
ツールバーの「コントロールウィザード」をonにして、「リストボックス」を使用してはどうでしょうか?念のため以下に記述しておきます。(3がポイントかも)

1.「リストボックスウィザード」が動き出したら、相手のテーブルを選択します。
2.「選択したフィールド」欄に表示したい2つのフィールドを指定します。
3.「キー列を表示しない」をオフにします。(チェックをはずす)
4.「選択可能なフィールド」及び保存したいフィールドを指定します。

もし、直接変更したい場合、上記フィールドを作ることにより、プロパティを比べることにより、設定箇所がわかるのでは?

的はずれでしたらご容赦を。

Qリストボックスのプロパティ「複数選択」の「標準」「拡張」の違い

アクセス(2003)のリストボックスのプロパティ「複数選択」の
「標準」と「拡張」は何が違うのでしょうか?
左下の補足?が出るバーには
「リストボックスで複数の項目を選択できるかどうかを指定します」
とどちらとも記載されていますが、結局は同じなのですか?
複数選択したい場合はとりあえず「標準」を選択しとけばOKでしょうか?
よろしくお願いします。

Aベストアンサー

> 「標準」と「拡張」は何が違うのでしょうか?

プロパティシートで『複数選択』にカーソルを合わせた後、
F1キーを押すと、以下のヘルプが表示されます。
(ヘルプファイルをインストールしている場合)

・標準
 マウスでクリックするか、またはスペース バーを押して、
 複数の項目を選択、または選択を解除できます。
・拡張
 Shift キーを押しながらマウスをクリックするか、Shift
 キーを押しながら方向キーを押して、前に選択された項目
 からカレント項目まで選択を拡張して、複数の項目を選択
 できます。Ctrl キーを押しながら 1 つの項目をクリック
 すると、その項目が選択されます。または選択が解除されます。


つまり、複数項目を選択する際の操作性が違う、ということの
ようです。
(「標準」の方だとひとつひとつ順にクリックしていくしかない
 ということなので、クリックミスを考えなければ、拡張の
 方が利便性はいいかと思います)


人気Q&Aランキング

おすすめ情報