[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力支援』(ぎん)
教えてください
「SHEET1」に名前の定義でリストを作成してあります 「SHEET2」で入力規則設定したリスト(▼)から選ぶようにしてあります
リストの数が多いので選ぶのに面倒です 一文字を入力したらオートコンプリートのようにリスト内の候補が出てくるようにで きるのでしょうか? 又、他に良い方法があればよろしくおねがいします
Excel2003 WindowsXP
[[20021128120235]] 9387
『同じ文字の入力』(ばた)
(こだぬき)
過去ログ探せなかったので。 リスト範囲に下記のようにインデックスを追加。 入力規則のセルに「え」と書き込んでから、プルダウンすれば 「え」のあたりから表示されます。 BJ
あ 青田 明石 い 飯村 飯野 う 植木 上野 え 江成 遠藤 お 大田 岡田 か 菅野 き 木村 く 工藤 国枝 け 見城 こ 小村 小茂田
やってみます ありがとうございました。
(ぎん)
VBAを知っているなら、
こんな方法もあります。
ichinose
ichinose さま
ご回答ありがとうございます VBAは全くわかりませんがやってみました (理想的な処理だったので)
下記@.Aにどうすればいのかおしえていただけますか
@・・・準備プログラムはそのままでいいのですか 新しい標準モジュールに文字もコードも貼り付けるのでしょうか?
A・・・ここがエラーとなります「コンパイルエラー 変数が定義されたいません」
よろしくお願いします。
新規ブック(Sheet1、Sheet2というシート名が存在する)にて 標準モジュールに準備プログラム
'====================================================================== Sub mk_sample() Dim r As Range With Worksheets("sheet2").Range("a1:a12") .Value = Evaluate("{""加藤"";""川上"";""河村"";""甲斐"";" _ & """麻生"";""浅田"";""上田"";""一の瀬"";" _ & """内田"";""井上"";""市村"";""遠藤""}")
.Phonetics.CharacterType = xlHiragana .SetPhonetic .Offset(0, 1).Formula = "=phonetic(a1)" End With With Worksheets("sheet1") Set r = .Range("a1") .OLEObjects.Add ClassType:="Forms.ComboBox.1", Link:=False, _ DisplayAsIcon:=False, Left:=r.Left, Top:=r.Top, Width:=r.Width + 15, Height:=r.Height + 4.5 End With End Sub
上記のmk_sampleを実行してみてください。
Sheet2のA1:B12に名簿リストのサンプルが作成され、
Sheet1のセルA1付近に「コントロールツールボックス」のコンボボックスが配置されます。
ここまでは動いたのですが
ここから下の部分がわかりません
実行した後に Sheet1のモジュールに ・・・・・ @
'============================================================================== Option Explicit Dim ev As Boolean 'Changeイベントの有無フラグ True--発生不可 False---発生可能 Private Sub ComboBox1_Change() Dim rng As Range 'リストデータのセル範囲 Dim svtext As String 'コンボボックスのTextの内容の一時保存 Dim myvalue As Variant If ev = True Then Exit Sub With ComboBox1 '←作成したコンボボックスの名前に変更すること ・・・・ A svtext = .Text If .Text <> "" Then With Worksheets("sheet2") Set rng = .Range("b1", .Cells(.Rows.Count, "b").End(xlUp)) End With If rng.Count = 1 Then If rng.Value = "" Then .Clear Exit Sub End If End If myvalue = Evaluate("transpose(if(mid(" & rng.Address(, , , True) & ",1," & Len(.Text) & ")=""" _ & .Text & """," & rng.Offset(0, -1).Address(, , , True) & ",""" & Chr(&HFF) & """))") If UCase(TypeName(myvalue)) <> UCase("variant()") Then myvalue = Array(myvalue) End If myvalue = Filter(myvalue, Chr(&HFF), False) '↑あり得ない文字を使用してフィルタをおこなう ev = True .Clear .List() = myvalue .Text = svtext ev = False If UBound(myvalue) >= 0 Then .DropDown End If Else .Clear .Visible = False .Visible = True .Activate '↑ここは、こうしないと残像が残るので(Excel2000) End If End With End Sub
以上です。例えば、コンボボックスに か と入力すると 加藤 川上 河村 甲斐 が候補として表示されます
続いて かわ と入力すると、川上、河村が候補として表示されます
Sheet2のB列のふり仮名部分の箇所をロ−マ字にすれば、希望の動作になると思います
>VBAは全くわかりませんがやってみました 全くわからないなら、実現は、現時点では大変ですよ!!
私は、ぎんさんがなさりたいような処置を一例として、提示したに過ぎません。
実際には、 >一文字を入力したらオートコンプリートのようにリスト内の候補が出てくるようにで きるのでしょうか?
という候補データがどんなデータなのかも知りませんし・・・。
提示したコードはこの「リスト内の候補が出てくる」というデータが 人名のようなデータだった場合、振り仮名で検索し、候補を出すような仕様になっています。
よって、候補データの内容によっては、修正も必要になってきます。
mk_sampleというコードは、コンボボックスの作成とリスト内の候補として使用するデータ例(適当な人名とその振り仮名)を作成しています。 >準備プログラムはそのままでいいのですか 準備プログラムとは、mk_sampleというプログラムのことですが、 別にあってもかまいません。 実際のデータは違うでしょうから
>新しい標準モジュールに文字もコードも貼り付けるのでしょうか? ちょっと意味がわかりませんが、実際のデータは、 このmk_sampleを実行した結果、作成されるSheet2のA列、B列のように 人名と振り仮名というデータをSheet2のA列、B列に直接入力するのですよ!! この時、実際のデータが人名のように漢字を含まないなら、コード修正も必要になるかもしれません。
>ここがエラーとなります「コンパイルエラー 変数が定義されたいません」
おそらくは、 >>実行した後に Sheet1のモジュールに
と記述しています。貼り付けるモジュールが違うと思います。
Option Explicit Dim ev As Boolean 'Changeイベントの有無フラグ True--発生不可 False---発生可能 Private Sub ComboBox1_Change() ・ ・
上記で始まるコードは、コンボボックスが作成されたSheet1のモジュールに 貼り付けます。
Sheet1のシートタブを右クリックし、表示されたメニューから コードの表示をクリックした時に表示されるモジュールに貼り付けます。
繰り返しますが、提示したコードは、
>一文字を入力したらオートコンプリートのようにリスト内の候補が出てくるようにで きるのでしょうか?
というご質問に対し、VBAを使えばできますよ という一例を示したに過ぎません。
上記のコードを適切に貼り付ければ、VBAを使えば、それが実現できることは わかると思います。
が、ぎんさんの扱いたい実際のデータでの実現は、コードを修正しなければ ならない場合もあります。VBAを知らなければ、ある程度の勉強は必要ですよ。
簡易例での動作を確認して、この方法で行くか否かはご自分で判断し決めてください。
ichinose
ご回答ありがとうございます
簡易例での動作を確認できました
まさにやりたいことそのものだったので挑戦しました(人名とふりがな)
With Worksheets("sheet2") Set rng = .Range("b1", .Cells(.Rows.Count, "b").End(xlUp))
実際データでのシート名とふりがなのあるセル番号に変更しましたらできました
ありがとうございました。
(ぎん)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.