[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ユーザーフォームのコンボボックスrの設定』(犬)
はじめまして、よろしくお願いします。 現在ユーザーフォームでコンボボックスのリストに50個ほどあります。 それを毎回探すのが面倒です。
VBAを記述するときに「Selection」と入力したいときに自動にリストがでて 「S」と入力すると「S」ではじまる単語が一番上にきます。 インターネットエクスプローラーでも文字を入力するときにでるやつです。 あれを、ユーザーフォームのコンボボックスに使うことはできませんか? 50個ほどあるリストを自動で入れたい単語がくるようにできないでしょうか? どうかよろしくお願いします。
ComboBoxのMatchEntryプロパティを調べてみてください。 (momo)
新規ブックにて試してみてください。
準備 ユーザフォームを一つ作成してください(UserForm1)。 このUserForm1にコンボボックスを一つ作成してください(ComboBox1)。
では、コードです。
UserForm1のモジュールに
'======================================================================= Option Explicit Dim rng As Range 'リストデータのセル範囲 Dim ev As Boolean 'Changeイベントの有無フラグ True--発生可能 False---発生不可 '======================================================== Private Sub UserForm_Initialize() Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp)) With ComboBox1 .Style = fmStyleDropDownCombo '←これは事前設定でよいです .MatchEntry = fmMatchEntryNone ev = False .List = rng.Value ev = True End With End Sub '=============================================================== Private Sub ComboBox1_Change() Dim myvalue As Variant Dim svtext As String 'コンボボックスのTextの内容の一時保存 If ev = False Then Exit Sub With ComboBox1 '←適当な名前に変更すること svtext = .Text If .Text <> "" Then If rng.Count = 1 Then If rng.Value = "" Then .Clear Exit Sub End If End If myvalue = Evaluate("transpose(if(mid(" & rng.Address & ",1," & Len(.Text) & ")=""" _ & .Text & """," & rng.Address & ",""" & Chr(&HFF) & """))") If UCase(TypeName(myvalue)) <> UCase("variant()") Then myvalue = Array(myvalue) End If myvalue = Filter(myvalue, Chr(&HFF), False) '↑あり得ない文字を使用してフィルタをおこなう ev = False .Clear .List() = myvalue .Text = svtext ev = True If UBound(myvalue) >= 0 Then .DropDown End If Else .Clear .Visible = False .Visible = True UserForm_Initialize .SetFocus '↑ここは、こうしないと残像が残るので(Excel2000) End If End With End Sub
次に標準モジュールに
'=================================================================== Sub test1() With Worksheets("sheet1") .Select .Cells.Clear End With Call mk_sample MsgBox "表示しているA列がユーザーフォームのコンボボックスのメンバーです" UserForm1.Show End Sub Sub mk_sample() With ActiveSheet .Range("a1:a20").Value = _ Evaluate("{""哀川翔"";""相田翔子"";""哀川哲司"";""相川正子"";""井上門多"";""井上順"";""伊藤博文"";""伊東吉事"";" & _ """内田裕也"";""内田有紀"";""遠藤幸吉"";""遠藤八十吉"";""小野寺誠"";""加藤清正"";""加藤剛"";""木村拓也"";" & _ """木下藤吉郎"";""熊田曜子"";""小林一茶"";""小林麻美""}") End With End Sub
以上です。
test1を実行してください。コンボボックスのメンバ表示のメッセージの後、 UserForm1が表示されます。
例 コンボボックスに 井上 と入力し、確定してください。 選択リストとして、井上門多、井上順 が表示されます。
コンボボックスに 小林 と入力し、確定してください。 選択リストとして、小林一茶、小林麻美 が表示されます。
このようなことですか?
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.