質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

702閲覧

ソートのためのFor文の途中でフォーム入力でソートリストを更新し指定の箇所からマクロを再開させる方法

HoneyCase

総合スコア13

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/08/25 10:08

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

わからないこと
フォーム入力中も残った商品などの処理が継続されて行われるため中断したいが
このメイン処理自体が他のマクロから呼び出して行ってる中途処理のため中断するとうまくマクロが回らなくなる

思いついて試したこと

  1. stopで止める

動作としてはこれでgotoで戻るのが一番近いが
完成時にVBEが開くのはダメ
0. msgboxで止める
これも動作としては近いがmsgbox表示中はフォームを操作できない
0. 別処理としてフォームの登録を押したら再開するようにする
一度マクロを中断すると引数がすべてリセットされるため
一連の処理ができなくなってしまう

以上、何かいい解決方法ありましたら教えてほしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

すみません。
落ち着いて考えたらフォームをmodalでやればいいだけでした。
自己解決しました。

投稿2021/08/25 12:16

HoneyCase

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問