|
▼さんたぱぱ さん:
おはようございます
書込み行(txtBox0 の値)をなぜリストボックスから選ぶのか、
そして、そのリストボックスになぜ A〜T列の複数列を指定しているのか
それは、そちらの要件でしょうから、どうこうコメントしません。
(選んだ行が間違いないということを操作者がリストボックス上のほかの項目も目視しながら確認する
ということだと想像していますが。ただ、A列に、おそらく、その行番号と同じ数字が入っているのでしょうけど
これは、選ばれたもののListIndexをもとに把握したほうが確実だとは思います)
さて、いずれにしてもRowSource付のリストボックスに対して、ボタンクリックで、そのRowSource内のセル領域に
書き込みますよね。そうしますと、ステップ実行を行ったとき、
Worksheets("売上データ").Cells(DB行, i + 1) = upForm("txtBox" & i).Text
この実行の後、
Private Sub ListBox1_Click()
ここに飛び込みませんでしたか?
(ステップ実行は、このあたりを明確につかむためにも有効です)
最初にB列に書き込んだ後、イベントの連鎖が発生しています。
で、まだ書き込まれていないC列以降の値を txtBox2以降にセットします。なので空白になります。
それがおわれば、またupBtn1_Clickに戻り次のテキストビック巣を処理します。
で、またもやイベント連鎖でListBox1_Clickに飛び込みます。
これが延々と19回、繰り返されます。
現象を回避するだけならたとえば以下の措置をしてください。
でも、リストボックスのClickイベントとコマンドボタンのClickイベントの役割分担というか
処理の構成については、再検討されたらよろしいのではと思いますが?
・Private Sub ListBox1_Click() の下に
If Me.Tag = "Skip" Then Exit Sub を追加
・Private Sub upBtn1_Click() の下に
Me.Tag = "Skip" を追加
また、このプロシジャの End Sub の上に
Me.Tag = Empty を追加。
|
|