[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力規則のような・・・』(田中)
セルに頭文字を入れると入れるとリストから候補があがるように
できるでしょうか?
例えばsheet2に名簿があってsheet1のセルに"k"と入力すると
加藤
川上
河村
甲斐
などのように候補があがるようなかんじですが・・・
宜しくお願いします。ちなみにXPです。
Sheet2へ下記のリストを作成します。 A B C 1 a k s 2 阿部 加藤 佐藤 3 安西 川上 斎藤 4 安藤 川村 佐川
A1:C4を選択して、挿入→名前→作成 [名前作成BOX]の上端行にチェックをいれて[OK] 以上で、a,k,s の名前が定義されます。
Sheet1のB1に、入力規則→リスト 元の値→ =INDIRECT(A1)
A1にa,k,s のいずれかを入力しますと、B1のリストに対応した名前が表示されます。(gon-2)
やってっみます。
ちょっとご要望とは違いますが・・・、VBAを使うと以前 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=25488;id=excel こんな投稿をしたことがありました。これをちょっと修正してみると・・・、
新規ブック(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 '←作成したコンボボックスの名前に変更すること 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の経験があるなら、試してみてください。
ichinose
さっそく使用させていただいたのですが、
名前を挿入するシートが50行くらいあって
そのシートの数が12シートくらいあるので少したいへんです。
もし上記のようなものでユーザーホームを作成して候補で決定したものを
選んだセルに転記できればよいのですが
お忙しいところすみません。
>名前を挿入するシートが50行くらいあって >そのシートの数が12シートくらいあるので少したいへんです これだけの記述では、私には仕様がはっきりわかりません。
>もし上記のようなものでユーザーホームを作成して候補で決定したものを
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=25488;id=excel
前回投稿でも提示しましたが、↑これがユーザーフォームの場合です。 もちろん、質問内容が違いますから、まるっきり同じではないですが・・・。
いずれにせよ、前回私が投稿したコードである程度動作の確認はできたのですよね? 正常に動作の確認ができないのなら、その旨を記述してください。 正常に動作することが確認できたなら、これを参考にご自分でコードを考え、 投稿してください。 その上で今度は、もう少しピンポイントの質問をしてください。
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.