ComboBoxでの一文字検索が上手くいきません
ソフトはEXCEL2003です。
質問内容:
ユーザーフォーム習い始めたところで、つまずいています。
やりたいことは、フォーム上に配置したComboBoxに別シート(選択一覧)で作成した「カタカナ1文字、会社名、会社コード」の3項目を表示可能にしておく。
ComboBoxへのカタカナ1文字入力により、該当する会社の上記3項目を表示し、会社選択後ComboBoxには会社名を表示、リストボックスには選択した会社コードを表示し、登録リストに会社名と会社コードを登録する。
フォームを作成してテストしましたが、一部のカタカナ(ヒなど)で該当する会社が選択されません。
何が問題なのか知識が足りませんので、困っています。
お分かりになる方に教えて頂きたくお願いします。
なお今回会社名をカタカナ1文字検索にしたのは、例えば社名の前に(株)等が付くものや、同じ漢字でも日本(ニホン)、日陰(ヒカゲ)等呼び名が異なるものがあるためです。
また、ComboBoxのプロパティは「MatchEntry」を「0-fmMatchEntryFirstLetter」としてあります。
ところで作成した命令は次の通りです。
Private Sub UserForm_Initialize()
Dim MyVar1 As Variant
Dim Ws1, Ws2 As Worksheet
Dim LastRow As Long
Set Ws1 = Worksheets("登録")
Set Ws2 = Worksheets("選択一覧")
Ws2.Select
MyVar1 = Range("A3:C490")
With ComboBox1
.ColumnCount = 3 ’カタカナ1文字、会社名、会社コード
.ColumnWidths = "20;230;10"
.List = MyVar1
End With
ComboBox1.TextColumn = 2
Ws1.Select
ComboBox1.MatchEntry = fmMatchEntryFirstLetter
End Sub
Private Sub ComboBox1_Change() '会社名処理
Dim Ws1, Ws2 As Worksheet
Dim NawRow As Long
Set Ws1 = Worksheets("登録")
Set Ws2 = Worksheets("選択一覧")
ComboBox1.MatchEntry = fmMatchEntryFirstLetter
'表示行数を確認 一番上が「0」なので+1
NawRow = Me.ComboBox1.ListIndex + 1
TextBox4.Text = Ws2.Cells(NawRow + 2, 3)
'会社コード表示;選択一覧は3列3行目から開始
Ws2.Cells(1, 1) = NawRow + 3
'選択一覧1行目に選択行表示 デバック用
End Sub
※登録リストへの会社名と会社コードを登録する部分は省略しました。
以上よろしくお願いします。
その他、このような多くの会社名選択で、よい方法があれば教えてください。
お礼
たびたび、アドバイスをして頂きありがとうございます。 製品サポートの部隊の方にも伺いまして、ComboBoxを継承しているクラスを呼び出している場所に、以下の様に設定し、無事希望通りの動作になりました。 ■調査方法 ---------------------------------------------------------------------------------- 1. dijit/form/ComboBox.jsを確認すると、(ValidationTextBox.jsと)dijit/form/ComboBoxMixin.jsを継承している 2. dijit/form/ComboBoxMixin.jsを確認すると、templateとしてdijit/form/templates/DropDownBox.htmlを使用していることが確認できる 3. dijit/form/tesmplates/DropDownBox.htmlを確認すると、文字列入力用のinputタグが、data-dojo-attach-point属性によりfocusNodeという要素名でアクセスできることを確認できる 4. したがって、インスタンス生成後に{ComboBoxインスタンス}.focusNodeの属性としてreadonlyを付与することで、ユーザーからのテキスト入力だけ無効化出来ることが分かる ---------------------------------------------------------------------------------- ■上記処理を、呼び出し元から設定する require( ~"dojo/dom-attr"); function( domAttr ){ ~ ~ ~ }; var ABCD(※) = new ABCD(キー情報,"キー情報"); for (var i = 0; i < finder.level - 1; ++i) { domAttr.set(ABCD._selectors[i].focusNode, "readonly", "readonly"); } ); ※ABCDは、digit.form.ComboBoxを使用しているクラス 本当にありがとうございました(^^)/~