[[20020527230814]] 『入力規則プルダウン以外の方法』(boochan) ページの最後に飛ぶ

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

 

『入力規則プルダウン以外の方法』(boochan)

普段、表を作るときには入力規則のリストでプルダウンで選択しているのですが、量が多く選択が面倒くさいのでほかの方法はないでしょうか?1を入力したら"男"になるとか。教えていただけないでしょうか。よろしくお願いします。


 みやほりんが 未解決ログ解消を目的に 2006/03/04 13:30 ごろ、投稿しました。
 トピ主の[boochan]さんの投稿は2002/05/27 23:08:14 でした。
 
[[20060220112228]] 『リストで省略?』(k) 
↑へ投稿したものの再掲。
 マクロで入力規則を同じセルへの入力で差し替える試作。
 
【準備】
50音順のリストを別シートへ作成。
この例ではSheet2という名前のシートのA1から下記のようなリストを作成。
見出しは「読みの一文字目をあらわすひらがな」とします。
下記では試作版のため「あ行、か行・・・」の区分リストにしてあります。
 
[Sheet2]
あ		か		さ
アールスメロン	キングデラ		さちのかイチゴ
青島みかん		クレオパトラメロン	佐藤錦
アムスメロン	小玉スイカ		サンつがるりんご
アンデスメロン			ジョナゴールりんご
印度りんご		
王林りんご		
 
入力を行うシートの見出しを右クリック、「コードの表示」を選択、
VBEが起動したら、コードウィンドウへ下記コードを貼り付け。
Alt+Q でエクセルに戻ります。
 
 Private Sub Worksheet_Change(ByVal Target As Range)
 Rem AutoValidateListChange
     Const MyRng As String = "A1:A10"
     Const MySh As String = "Sheet2"
     Dim MyName As Name, Flag As Boolean
 Rem 初期判定:Targetセル数=1,Targetの文字数=1
     If Target.Count > 1 Then Exit Sub
     If Len(Target.Value) <> 1 Then Exit Sub
     Flag = False
 Rem ブックの名前削除
     For Each MyName In ThisWorkbook.Names
         MyName.Delete
     Next MyName
 Rem ブックの名前再設定
     Worksheets(MySh).Range("A1").CurrentRegion.CreateNames _
         Top:=True, _
         Left:=False, _
         Bottom:=False, _
         Right:=False
Rem Targetへの入力かなを判定して入力規則設定
     If Not Intersect(Target, Me.Range(MyRng)) Is Nothing Then
         For Each MyName In ThisWorkbook.Names
             If MyName.Name = Target.Value Then
                 With Target.Validation
                     .Delete
                     .Add _
                         Type:=xlValidateList, _
                         AlertStyle:=xlValidAlertStop, _
                         Operator:=xlBetween, _
                         Formula1:="=" & Target.Value
                     .IgnoreBlank = True
                     .InCellDropdown = True
                     .ShowError = False
                     .IMEMode = xlIMEModeHiragana
                 End With
                 Target.Select
                 SendKeys "%{Down}"
                 Exit Sub
             Else
                 Flag = True
             End If
         Next MyName
         If Flag Then MsgBox "その読みの単語登録はありません。"
         Target.Select
     End If
 End Sub
 
【使用方法】
コードを登録したシートのA1〜A10の範囲で「ひらがな」を一字入力してEnter。
読みに応じた入力規則のリストから選択が可能です。
上記例ではA1へ「か」と入力しEnterすると、
「キングデラ、クレオパトラメロン、小玉スイカ」の中から選択。
上記のリストでは「あ行、か行・・・」の区分リストにしてあるけれども、
もっと細かく50音別区分のリストを作成すれば、それに対応します。
 
【注意事項】
(1)コード中、下記部分がそれぞれ、入力範囲、リスト作成シート名の設定部分な
   ので、適宜変更してください。
     Const MyRng As String = "A1:A10"
     Const MySh As String = "Sheet2"
(2)リストの見出しはひらがなを想定しているので、英数全角半角文字は使わない。
   これは英数字ではセルの値と作成される名前が一致しなくなるため。
   英数字以外であれば、ひらがなでなくてもかまいませんが、読みの一文字目が
   たぶん楽でしょう。
(3)ブックの定義された「名前」を全削除するコードが含まれるので、すでに名前
   定義の行われているブックで使用しないようにしてください。
(4)ツール>オプションのオートコンプリートはOffにしておいたほうがよいでし
   ょう。
(5)あくまで連続セルを想定。
(6)リストの見出しとまったく同一の文字列は入力できなくなる。
   [Sheet2]で "あ" という見出しのリストに "あ" があってもリストから
   選択できない
(みやほりん)(-_∂)b


コメント返信:

[ 一覧(最新更新順) ]


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