Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8810 / 76732 ←次へ | 前へ→

【73490】Re:テキストボックスからセルへ For文
発言  UO3  - 13/1/15(火) 9:58 -

引用なし
パスワード
   ▼さんたぱぱ さん:

おはようございます

書込み行(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 を追加。

237 hits

【73462】テキストボックスからセルへ For文 さんたぱぱ 13/1/13(日) 21:15 質問
【73463】Re:テキストボックスからセルへ For文 UO3 13/1/13(日) 22:24 発言
【73464】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/13(日) 23:00 発言
【73465】Re:テキストボックスからセルへ For文 カリーニン 13/1/13(日) 23:14 発言
【73467】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/14(月) 7:07 発言
【73469】Re:テキストボックスからセルへ For文 ichinose 13/1/14(月) 8:40 発言
【73480】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/14(月) 21:59 発言
【73486】Re:テキストボックスからセルへ For文 ichinose 13/1/15(火) 6:41 発言
【73470】Re:テキストボックスからセルへ For文 UO3 13/1/14(月) 10:00 発言
【73482】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/14(月) 22:17 発言
【73483】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/14(月) 22:20 回答
【73490】Re:テキストボックスからセルへ For文 UO3 13/1/15(火) 9:58 発言
【73494】Re:テキストボックスからセルへ For文 さんたぱぱ 13/1/15(火) 23:29 お礼

8810 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free