|
▼247b さん,Hirohumiさん、ありがとうございます。
TBL(Cnt).Value = vntData(1, Cnt) に修正しました。
ただTBL(Cnt)の次に「.」を入力したときに次候補がリストアップされますが、その中に「value」はなかったのですが(v候補はvisibleだけでしたが)、valueを加えました。
>BoundColumnに1を指定した場合は、上記の問題は起こらず、コンボボックスに値が表示されます。
>さらにValueプロパティではなく、TextColumnプロパティに代入すると、BoundColumnが2でもエラーは発生しませんが、コンボボックスに値が表示されません。
>
>つまり、Combo社員ID.Valueに対し、リストの列2に存在しない値を代入しようとしてエラーが発生していると考えられます。
>念のためですが、
>TBL(Cnt) = vntData(1,Cnt)
>という記述はプロパティの指定がないため、デフォルトプロパティが適用され、Valueプロパティがそれに該当するのでValueが用いられているはずです。
>
>解決策としては、BoundColumnが1の状態で使用できるよう、元のリストの列位置変更するのが良いと思います。
>なお、こちらの環境は2003です。
BoundColumnを「1」に修正したところ、User_Formが表示され、今までどおりのSheets("支給台帳")のデータが、spinボタンで前後させても表示されるようにはなりました。
早速Combo社員IDを選択すると、「社員ID」「氏名」の2列も表示されていました。
また、Combo社員ID中のリストを選択すると、ちゃんとTextboxに反映されました。
ただ、Combo社員ID中のリストの1行目、2行目を選択した場合に限り、「リストプロパティの値を取得できません。プロパティの配列のインデックスが不正です。」とのエラーメッセージが出て、デバッグで確認すると
Text氏名.value = .List(.ListIndex, 1)の部分が黄色に反転しています。
次に、Spinボタンでデータを移動させると、当該行の社員ID,氏名が、Combo社員ID中のリストも黒く反転しているのですが、当該人Aの値がtextboxには反映されておらず、一旦、Combo社員ID中の別のID,氏名を選択してから、当該人Aを選択すると他のtextboxにも当該人Aの値が反映できました。(一旦別人を選択してから当該人を選択するというワンクッションを経なければ反映されない)
Spinボタンでデータを移動させずに(データを固定したままだと)、Combo社員IDを選択すると、次々とスムーズにいくのですが・・・・
しようとしていたのは、Spin移動したときも、Combo社員IDはChangeするので、そのChangeのたびに、当該人の値を代入できればと思っていたのですが、このCombo社員IDでのComboListからの取得方法自体が間違いで、例えば各TextBoxにVlookup関数なりで給与マスターから値を取得したほうが良かったのでしょうか?
|
|