[[20160514125258]] 『リストボックスの横表示』(ちか) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『リストボックスの横表示』(ちか)

いつもお世話になっています。
わかりにくい質問ですみません。

ユーザーフォーム上のコントロールを減らすために工夫しています。
また、ぱっとぱっと選択していきたいのです。

5選択肢から1つを選択することをしたいです。

コンボボックスを設定するのが手っ取り早い方法です。
これでは選択肢が下矢印をクリックするまで、選択肢がどのようなものかがわかりません。

選択肢が5つ並んでいて、1つしか選択できないようにするためには、オプションボタンを5つ並べて、GroupNameもしくはフレームで一括りするとできます。
しかしこれではコントロールが5つ(以上)になります。

リストボックスにfmListStyleOptionを設定し、5行表示にすると、コントロールは1つですみます。

しかしこれでは、縦に表示されるので、スペースの問題や見やすさの関係もあって、横に表示したいのです。

(ファイルメーカーではできますが、エクセル上でしてみたい)

まとめますと、「リストボックスの枠内に、オプションボタンが表示された5つの選択肢が横に並んでいる」、ことはできますでしょうか。

よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


5択なら素直にオプションボタンかリストボックスを使うのが吉と思うが、
どうしてもという事なら、タブストリップかマルチページでも使ったらどうか。

(とおりすがり) 2016/05/14(土) 13:55


とおりすがり さん
ありがとうございます。

そうなんです。

なんですが、報告書を見ながら、データを転記していくのですが、これが何項目もあるので(実際には15項目)、ストレスなく10数秒で終わらせたいのです。
  
いろいろ調べているんですが、Excel VBAにこういった機能自体がないのでしょうか?
(ちか) 2016/05/14(土) 14:10


項目が横に並んだリストボックスですか、今までそう言う話は聞いたことがなかったですね。
縦に項目を並べたほうが視覚的に判別し易いということで、そうしているのでは?
Excelには無いんじゃないですか?(プロパティを見たところそういうのはなさそう)

個人差があるのかもしれないですね。
オプションボタンもNGなら、Excelやめてファイルメーカーですかね。

# もし可能だったら失礼。
(γ) 2016/05/14(土) 15:40


γさん
ありがとうございます。

やはりないですよね。

以前,ユーザーフォーム上にコントロールの置きすぎが原因で(と最終的には判断しましたが),オートメーションエラーがでてしまった経緯があり,コントロールを少なくできれば,と思い質問させてもらいました。

また,エクセルが使えない環境なので,その環境でファイルメーカーのようなことができないか,と奮闘?してきました。

外の環境でファイルメーカーのランタイムバージョンを作成して,この環境に導入してもいいんですが,それだと項目の変更や追加毎に,導入し直さなければいけないし,エクセルだったらすぐに変更できて使い勝手がいいので,と思い,,,。
(ちか) 2016/05/14(土) 16:10


↑訂正

(誤)エクセルが使えない環境

(正)ファイルメーカーが使えない環境
  
すみません。
(ちか) 2016/05/14(土) 16:12


 >(実際には15項目)、ストレスなく10数秒で終わらせたいのです。 

5択×15で、オプションボタン+フレームなら90個、リストボックスなら15個
ということか。

となると90はちょっと多い気がする(作成メンテの手間という意味で)、ここは
やはりリストボックスが良さそうだ。

報告書とやらのレイアウトが横並びの5択になっているのでそれと合わせた方が
作業がしやすいと考えているのかもしれないが、慣れの問題ではないか。

(とおりすがり) 2016/05/14(土) 18:41


 γさんも指摘されていますが

 >>しかしこれでは、縦に表示されるので、スペースの問題や見やすさの関係もあって、横に表示したいのです。 

 スペースの問題があるなら、なおさら、縦ではないですか?
 今は5択でしょうけど、選択候補が増えて、6択、7択 になっていくかもしれませんよね。
 そのたびにユーザーフォームの横幅を広げていくのでしょうか?

 オートメーションエラーの危惧があるなら(大昔、βも、実際の処理で、困った時に対応したんですが)
 選択をサブフォームにして、15種類の選択、それぞれをサブフォームで取得させて、取り込む方法もあるかと思います。
 (もちろん、サブフォームは1つだけ、それに情報を与えて表示して、選択させて、選択内容を取得してサブフォームをUnload)

(β) 2016/05/14(土) 18:46


こんにちは。

小さなテキストボックスに1〜5のいずれかを入力させて
数値に応じて、隣のラベルにテキストが表示されるようにするのはどうでしょう。
これだと数値を入れるまで選択肢が見えませんが
>報告書を見ながら、データを転記していく
報告書のほうに選択肢が印字されていないかなと、希望的観測。
まあ、何枚も入力していけばそのうち項目なんて覚えてしまいますよ。

>ユーザーフォーム上のコントロールを減らすために工夫しています。
だったらわたしなら 間違いなく シートを使います。
シート上にコントロールの置くのではありません。
シートをフォームに、セルをコントロールに見立てます。

( 佳 ) 2016/05/14(土) 19:31


こんにちは。

自分で「シート」と書いて自分で触発されて(笑
アンケート結果をエクセルで集計するときはどんなふうに入力するのだろうと
(ああ、ちかさんのなさっているのがアンケートかは分かりませんが、うかがう限り似ているので)
一般的にはたとえばこんなです。ご参考になるかわかりませんが。

h ttp://biz-glowing.com/input/input_enq.html

( 佳 ) 2016/05/14(土) 20:07


とおりすがりさん
ありがとうございます。
  
確かに慣れの問題もあります。
フォームの作成はしますが、入力は他の数名にしてもらうので視点が違いそうです。
(ちか) 2016/05/15(日) 23:55

βさん
ありがとうございます。

サブフォームを作成するのが現実的ですね。
選択肢は多くても対応できそうです。
(ちか) 2016/05/16(月) 00:02


 佳 さん
ありがとうございます。

実際は、、、

「A, type2, T3, ly1, v0, int, INFb, N0, H0, P0, M0, Stage ?U,,,,」

という報告書で、これをデータにしていきます。

A、のところの選択肢は、「C, A, T, D, S, RS, Ra, Rb, P」
type2、のところの選択肢は、「0, 1, 2, 3, 4, 5」
T3、のところの選択肢は、「is, 1, 2, 3, 4a, 4b」
ly1、のところの選択肢は、「0, 1, 2, 3」
、、、という感じです。

なので、

深達度:○C, ◎A, ○T, ○D, ○S, ○RS, ○Ra, ○Rb, ○P

という形にするか

深達度:
○C
◎A
○T
○D
○S
○RS
○Ra
○Rb
○P

という形にするか、ということです。

それぞれの意味が分かる人がするのはいいのですが、専門的に内容がわからない人でも機械的に選択していけるために示しておきたいのです。
(ちか) 2016/05/16(月) 00:46


こんにちは。
ちかさん、詳しいご説明ありがとうございます。

わたしは3つ提案しましたが、それだと2つ目(シートを使う)が合いそうです。
あらかじめシート上に下記のようにセルに書き込んでおいて、
入力担当者が、C1〜K1のいずれかをダブルクリックすると(これはリストボックスをクリックする代わりです)
A1セルに、ダブルクリックしたセルの列番号から3を引いた数値が入る。
と同時にダブルクリックしたセルが白黒反転する(リストボックスのまね)。

いかがでしょうね。
いきなりシートと言われて面食らわれるかも知れませんが
シートは軽いですよ(^^ 5×15くらい楽々です。
まあ、前後の作業との繋がりもあるでしょうから、、、、
ご検討ください。

B1 深達度
C1 C
D1 A
E1 D
F1 T
G1 S
H1 RS
I1 Ra
J1 Rb
K1 P
( 佳 ) 2016/05/16(月) 05:52


 今回の場合、佳さんアドバイスのシート上での処理が、ユーザーフォーム版より使いやすく、
 また、様々なお化粧(書式等での強調 等)もしやすいので、見栄えの面でもお勧めだと思います。
 シート上の処理にしておけば、選ばれた内容から、いろいろ処理するコードも融通がきき
 またエクセルの持つ、多くの便利な機能を、そのまま使うこともできますので。

 ということですので、以下は遊びとして、とりあえず、提示があった4項目についてのサンプルです。

 ●準備

 1.シート上に 各リスト(C, A, T, D, S, RS, Ra, Rb, P 等)を縦にセットして、そこに名前を付けておきます。
  以下の例では、List1、 List2 ・・・ といった名前にしました。
 2.ユーザーフォームを2つ準備します。
  1)UserForm1
   ・縦に、Label1〜Label4 、その右側に 同じく縦に、CommandButton1〜CommandButton4
   ・各Label のCaptionを "A" "type2" "T3" "ly1" にします。 
   ・CommandButton1〜CommandButton4 を全部選択して Caption を "未選択" にします。
  2)UserForm2
   ・ListBox1 を配置します。

 ●UserForm1 モジュール

 Public CloseFlag As Boolean

 Private Sub CommandButton1_Click()
    Call GetList(CommandButton1, Label1, "List1")
 End Sub
 Private Sub CommandButton2_Click()
    Call GetList(CommandButton2, Label2, "List2")
 End Sub
 Private Sub CommandButton3_Click()
    Call GetList(CommandButton3, Label3, "List3")
 End Sub
 Private Sub CommandButton4_Click()
    Call GetList(CommandButton4, Label4, "List4")
 End Sub

 Private Sub GetList(cb As MSForms.CommandButton, lbl As MSForms.Label, adr As String)

    CloseFlag = False

    With UserForm2
        .StartUpPosition = 0
        .Top = Me.Top + lbl.Top
        .Left = Me.Left + lbl.Left + lbl.Width
        .Caption = "報告書:" & lbl.Caption
        .ListBox1.List = Excel.Range(adr).Value
        .Show
        If Not CloseFlag Then cb.Caption = .ListBox1.Value
    End With

    Unload UserForm2

 End Sub

 ●UserForm2 モジュール

 Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.Hide
 End Sub

 Private Sub UserForm_Terminate()
    UserForm1.CloseFlag = True
 End Sub

 ●標準モジュール

 Sub Test()
    UserForm1.Show
 End Sub

 こうして、Testを実行してみてください。
 設問に相当するCommandButtonをクリックすれば、その右あたりに該当のリストを表示。
 選択したい項目をダブルクリックで、項目が選択されます。
 リストを見ただけで、選択しない場合は、Xボタンで戻ります。
  
(β) 2016/05/16(月) 13:56

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.