[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『combobox複数列の値転記について』(milky)
ユーザーフォームにcomboboxとtextboxがあります。
comboboxにはリストのA:B列を表示し、選択するとA列が入力され
textboxにはB列が表示されます。
これを其々セルに転記したいのですが、登録で”Listプロパティの値が取得できません”
と、エラーが出てしまします。
どの様に修正したら良いでしょうか・・・
ご教授ください。
combobox=コードです。
textbox=発注先です。
Private Sub CommandButton1_Click() '新規
コード.Text = ""
発注先.Text = ""
Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 1).Activate
End Sub
Private Sub CommandButton2_Click() '登録
Cells(ActiveCell.Row, 3).Value = コード.Text
Cells(ActiveCell.Row, 4).Value = 発注先.Text
コード.Text = ""
発注先.Text = ""
End Sub
Private Sub UserForm_Initialize() '表示
Dim lRow As Long With Worksheets("リスト") lRow = .Range("A" & Rows.Count).End(xlUp).Row End With With コード .ColumnCount = 2 .ColumnWidths = "30;60" .RowSource = "リスト!A2:B" & lRow End With
発注先コード.Text = Cells(ActiveCell.Row, 3).Value
発注先.Text = Cells(ActiveCell.Row, 3).Value
End Sub
Private Sub 発注先コード_Change()
発注先.Text = 発注先コード.List(発注先コード.ListIndex, 1)
End Sub
< 使用 Excel:Excel2010、使用 OS:Windows7 >
combobox=コードです。 textbox=発注先です。
ということですが
発注先コード.List(発注先コード.ListIndex, 1)
この 発注先コード というコントロールは何ですか?
(β) 2015/01/23(金) 11:43
コード.List(コード.ListIndex, 1)です。
すみません。
(milky) 2015/01/23(金) 13:22
エラーの原因そのものは、登録の中の コード.Text = "" これで コード(ComboBox)に関するChangeイベントが連鎖発生して そのルーティンで ListIndexを指定してListにアクセスしようとしているところ、ListIndexがない(-1)なので エラーと、こういうことなので、イベント連鎖を回避する手立てが必要なんですが、それ以前に、 ユーザーフォームのTextBoxやComboBoxのChangeイベントは、使うのが難しいというか、極論すれば ほとんど、使えないしろものです。 操作としてはComboBoxのドロップダウンリストからの選択でしょうけど、仮に、生入力するとすれば それがリストにマッチしないものであった場合、たとえばxyzと入力すると、x で発生、、xy で発生、xyz で発生。 しかも、このコードでは、最初の x で同じエラーになりますね。 ListIndexはあくまでドロップダウンリストから 選ばれる、あるいは最初に入力した文字でリストのどこかとマッチして、それが選ばれた状態になります。 リストとマッチしない場合は、ListIndexに値を持たないままChangeイベントに飛びます。
たとえば、シートのChangeイベントに相当するユーザーフォームのComboBoxやTextBoxのイベントは BeforeUpdate,AfterUpdate 等の Exit系イベントです。
(β) 2015/01/23(金) 13:53
お返事ありがとうございます。
難しいですね・・・
おっしゃっている事、何となく理解はできました。
Changeイベント以外で何か方法はありませんか?
(milky) 2015/01/23(金) 14:30
AfterUpdateでできました!
ありがとうございました。
(milky) 2015/01/23(金) 16:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.