| |||
#
by 03musi
| 2013-01-21 23:09
| マクロ 基礎
#
by 03musi
| 2013-01-20 21:56
| マクロ 基礎
止まらないマクロを停止する~無限ループ~/マクロ基礎Do…LoopやFor…Nextを使っていると永遠に終わらないマクロを書いてしまう場合がある VBEでもこのような論理的に矛盾の無い構文は検知してくれないから、実行してしまうとExcelを閉じる事さえできなくなる 無限ループの原因にもよるみたいだけど、【Esc】かもしくは【Ctrl】+【Pause】で止まるようです 一度陥った事があったのですが、どんな構文だったか忘れたし、新たに無限ループを作ろうにもすぐに思いつかなかったので、まだ未検証ですけど。。 僕の場合、実際の記述の中で、実行結果が希望通りになっているか検証できるまでは、回避策としてExitを選択できるようなIf文を仕込んでおくようにしている Exit ステートメントは文字通り処理を抜けるステートメントです 早い話が、その処理を途中でやめるのですが、マクロ全体をやめてしまう訳ではなくて、指定方法によって、やめる処理の範囲が違います Exit Sub Subプロシージャを中止します Exit Function Functionプロシージャを中止します Exit For For…Nextステートメント・For Each…Nextステートメントを中止します Exit Do Do…Loopステートメントを中止します 構文に間違いが無ければ、最後に削除すればよい 例えばこんな感じ A列のセルを上から巡回して、最初の空白セル(次に入力するであろうセル)に番号を1足して入力するマクロ オートインクリメントです Sub sample1() シートにはこのように入力しておきます 実行 思惑通り、オートインクリメントした後に、処理を終了する事が確認できたら Sub sample1() 確認用メッセージボックスをコメントアウトするか、削除して完了 そうすれば、上の画像の1~3までのメッセージボックスは表示されず、目的の処理だけ行ってくれます 範囲指定してコメントアウトする方法はコメントアウト/マクロ基礎を参照してください どうですか? 強制的に終了させるより、かっこいいでしょww。osamushi オサムシじゃーなる #
by 03musi
| 2013-01-20 14:12
| マクロ 基礎
For Each ステートメント/マクロ基礎For Each ステートメントは、グループの構成要素を順番に操作していく為のステートメントです ここでいうグループとは配列やコレクションを指します 配列とは、例えば選択した複数セルが該当します マクロを書いてみよう Sub 選択セル繰り返し() シートに適当な値を入力して選択 セルの中身は見てないので、選択したセルは空でも表示します For Each hyouji In Selection この部分を For Each hyouji In Range("A1:A4") と直接範囲指定しても同じ結果です コレクションを使うなら例えばWorksheetsだと For Each hyouji In Worksheets これで、設定されているシートを左から順番に処理する Offsetプロパティなどと組み合わせても使えるね! 創造力を掻き立てるステートメントですな。osamushi オサムシじゃーなる #
by 03musi
| 2013-01-19 20:50
| マクロ 基礎
Do Loop ステートメントDo Loop ステートメント は、指定した条件によって処理を繰り返す 1.繰り返し前で条件を判定する Do 条件 処理 Loop 条件を満たさなかった場合、処理は1回も実行されない 2.繰り返しの後で条件を判定する Do 処理 Loop 条件 条件を満たさなかった場合でも、1回処理が実行される その後は繰り返さない 条件に対して2つの選択肢がある 1.真の時繰り返す While 条件 2.偽の時繰り返す Until 条件 言葉で書いたところでイマイチ意味がわかりにくいので、マクロを書いてみましょう Sub sample1() 実行してみよう まず、シートのA1セルから下に1,2,3,4,5と入力 マクロを実行 ここでA6セルはEmpty(空)の為、ループ処理が終わる A列に値が入っている限り、延々と続いてしまうので、Ifにてキャンセルボタンを押した場合はLoopから抜ける手段を用意しておいた。 Do Loopもよく使いそうなステートメントだね、覚えておこう!osamushi オサムシじゃーなる #
by 03musi
| 2013-01-17 01:00
| マクロ 基礎
| |||
ファン申請 |
||