VBAのマクロのループ処理について
作りたいもの
未登録商品をリストに登録したら
もう一度、「ここから再開」の部分から再開させて登録商品として読み込ませる
またはフォーム操作中はマクロを中断する
vba
1 2sub メイン処理(商品リスト as variant) 3dim hoge as variant 4redim hoge(100,2) 'ソートしたい商品リスト 5 6'各行ごとに登録されているかリストと照らし合わせ 7for i = 1 to ubound(hoge) 8 'ここから再開 9 for j = 1 to ubound(商品リスト) 10 if hoge(i,2)= 商品リスト(j) then 11 処理1 12 goto 処理完了 13 end if 14 call 商品登録(hoge(i,2)) 15 next 16処理完了: 17next 18 19end sub 20 21 22sub 商品登録(未登録商品 as variant) 23 24with 商品登録フォーム 25 .Label1.caption=未登録商品 26 .show 27end with 28 29end sub 30 31 32sub 商品登録フォームの登録ボタン_click() 33 34入力された内容をシートに書き込む 35 36end sub 37
わからないこと
フォーム入力中も残った商品などの処理が継続されて行われるため中断したいが
このメイン処理自体が他のマクロから呼び出して行ってる中途処理のため中断するとうまくマクロが回らなくなる
思いついて試したこと
- stopで止める
動作としてはこれでgotoで戻るのが一番近いが
完成時にVBEが開くのはダメ
0. msgboxで止める
これも動作としては近いがmsgbox表示中はフォームを操作できない
0. 別処理としてフォームの登録を押したら再開するようにする
一度マクロを中断すると引数がすべてリセットされるため
一連の処理ができなくなってしまう
以上、何かいい解決方法ありましたら教えてほしいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。