|
▼氷 さん:
こんばんは。
>ワークシートに、コンボボックスを1つ作りました。
>そのコンボボックスには、A1〜A5のセルのリストが入っていて、
>A1〜A5の中身はそれぞれ、愛、アイス、書く、隠す、かくれんぼ、というものにしました。
>コンボボックスに、「かく」と入れて確定すると、かくれんぼが出てきます。
>この補完機能を消すには、どうしたら良いのでしょうか?
>後、あ、と入れるだけで(確定させずに)、あから始まる言葉(この場合は愛とアイス)がドロップダウンするようには出来るのでしょうか?
>同様に、かと入れると、書く、隠す、かくれんぼの3つがドロップダウンするようにしたいんですが・・・。
>どなたか教えて下さい><
以下のコードをコンボボックスを作成したシートの
シートモジュールに貼り付けてください。
尚、コンボボックス名はCombobox1とします
違う名前なら、コードを変更して下さい。
'=============================================================
Dim ev As Long 'Changeイベントの有無フラグ 0--発生可能 その他---発生不可
'======================================================================
Sub settei()
ev = 1
With ComboBox1
.ListFillRange = ""
.MatchEntry = fmMatchEntryNone
.Style = fmStyleDropDownCombo '←これは事前設定でよいです
.Text = ""
.Clear
End With
ev = 0
End Sub
'=====================================================================
Private Sub ComboBox1_Change()
Dim svtext As String 'コンボボックスのTextの内容の一時保存
Dim rng As Range
If ev > 0 Then Exit Sub
Set rng = Range("a1", Cells(Rows.Count, 1).End(xlUp))
With ComboBox1 '←適当な名前に変更すること
svtext = .Text
If .Text <> "" Then
If rng.Count = 1 Then
If rng.Value = "" Then
.Clear
Exit Sub
End If
End If
myvalue = get_match_array(rng, .Text)
TypeName (myvalue)
ev = 1
.Clear
If TypeName(myvalue) <> "Integer" Then
.List() = myvalue
.DropDown
End If
.Text = svtext
ev = 0
Else
ev=1
.Clear
.Visible = False
.Visible = True
.Activate
ev=0
End If
End With
End Sub
'===============================================================
Function get_match_array(rng As Range, ByVal f_str)
'f_strの内容とセル範囲(rng)の値とフリガナを検索し、どちらかが部分一致した
'セルの内容を配列と出力する
Dim myarray()
Dim crng As Range
Dim cnt As Long
f_str = StrConv(f_str, vbHiragana)
cnt = 0
For Each crng In rng
If f_str = Mid(StrConv(crng.Text, vbHiragana), 1, Len(f_str)) Or _
f_str = Mid(StrConv(crng.Phonetic.Text, vbHiragana), 1, Len(f_str)) Then
ReDim Preserve myarray(1 To cnt + 1)
myarray(cnt + 1) = crng.Text
cnt = cnt + 1
End If
Next crng
If cnt > 0 Then
get_match_array = myarray()
Else
get_match_array = 0
End If
End Function
コンボボックスの入力を行う前に一度だけ、
setteiというプロシジャーを実行して下さい。
「ツール」---「マクロ」とクリックすれば、
「シート名!settei」というマクロ名が表示されるはずですから
選択して実行して下さい
その後で対象となるコンボボックスに入力して試してみて下さい。
確認して下さい。
|
|