
マクロについて、質問があります。初めて作りました。
ステップインも実行も問題なく出来るが、使っているうちにデバックエラーが頻発するようになる。デバックエラーで確認するとInsertの行で止まっている。
デバックを終了すると固まってしまい、タスクマネージャーでタスク終了するしかなくなってしまう。
デバック終了後時々、考え中で点滅しながらずっと考え中のままになってしまう時がある。
構文がまちがっているのでしょうか。20個程度のマクロ、条件付き書式・関数を多用している表の中に組み込んでいるマクロなので、パソコンの処理能力とか重いとかそういうことでしょうか。
どうしてこうなるのかさっぱりわかりません。
構文を記載いたします。どなたかアドバイスをお願いいたします。
「アクティブセルの行をコピーして下の行に挿入し、不必要なところを削除する。」
Sub CommandButton1_Click()
Dim rowno As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
rowno = ActiveCell.Row
Rows(rowno).EntireRow.Copy
Rows(rowno + 1).Insert
Rows(rowno + 1).Columns("I:O").ClearContents
Rows(rowno + 1).Columns("I").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
私も少し考えてみました。
#1様の
Application.CutCopyMode = False を追記する。
は入れてみましたね。
まあ、私は、ActiveX コントロールには懲りていますから、使いません。
なお、ActiveX コントロールを起動中は割り込みが効かないはずですから、イベントではあっても、イベントの再帰の恐れはないはずです。
とはいうものの「20個程度のマクロ、条件付き書式・関数を多用」では、どこが原因とか、手元においてしばらく使ってみないとなんとも言えないと思うのです。
.Cellsの前の「.(ピリオド)」が抜けるとあらぬところを指しますからご注意を。
'//
Sub CommandButton1_Click()
Application.Calculation = xlCalculationManual
With ActiveCell.EntireRow
.Copy
.Offset(1).Insert
.Cells(1, "I").Resize(, 8).ClearContents
.Cells(1, 8).Select
Application.CutCopyMode = False
End With
Application.Calculation = xlCalculationAutomatic
End Sub
No.3
- 回答日時:
Private Sub CommandButton1_Click()
CommandButton1.Enabled = False
ActiveSheet.Activate
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
kkcs = Selection(1).Row + 1
kkie = Selection(Selection.Count).Row + 1
Cells.Select
ActiveSheet.Rows(kkcs).Select
Rows(kkcs - 1).EntireRow.Copy
Rows(kkcs & ":" & kkie).Insert Shift:=xlDown
Rows(kkcs & ":" & kkie).Columns("I:O").ClearContents
CommandButton1.Top = Rows(kkcs - 1).Columns("I").Top
Rows(kkcs).Columns("I").Select
Rows(kkcs + 1).Columns("I").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
CommandButton1.Enabled = True
End Sub
こんなのではどうでしょうか。
ただし
「アクティブセルの行をコピーして下の行に挿入し、不必要なところを削除する」
ではなくて、
「選択していた範囲の最上位の行をコピーして、選択していた範囲のすべての行に貼付け、選択していた範囲の2行目以降はその下に移動させる。選択していた範囲のすべての行に貼付けたところは、"I:O"列はデータの値を消す」
コマンドボタンを押す前に選択していたのが5行なら、最初の1行目のあとに5行増やしてしまいます。
コマンドボタンを押す前に選択していたのが1行なら、最初の1行目のあとに1行増やします。
目的がわからないのですが、「使っているうちにデバックエラーが頻発する」のなら、
操作回数を減らしたら、エラーが減るのではないかと思ったからです。
Cells.Select
ActiveSheet.Rows(kkcs).Select
これは何の意味もない無駄な操作に思えるのですが、選択を変えると、もしかすると、エラーが起きにくくなるのではないかと、適当にやったものです。
CommandButton1.Enabled = False
これも、エラーで途中で止まるとやや困るコードですが、まだマクロ実行中にコマンドボタンをクリックして、それがおかしなエラーの原因になるのことは、、、と思って書き加えました。
最後に、マクロ実行が終わるときに、
CommandButton1.Enabled = True
で、正常に戻し、コマンドボタンをクリックできるようにしています。
CommandButton1.Top = Rows(kkcs - 1).Columns("I").Top
Rows(kkcs).Columns("I").Select
Rows(kkcs + 1).Columns("I").Select
これも余計なことですが、次々と行を増やしていくと、コマンドボタンの位置が前のママだと使いにくかったので、入力待ちの行の付近に移動させました。
一応エラーは私の試した範囲では出ませんでしたが、元の状態だと、十数回繰り返すと、実行時オートメーションエラーがでて、その後、どうにもならない状態になって、確かに困りました。 実行時オートメーションエラーがなんででるのか、どうすれば対処できるのかわからなかったので、ガチャガチャ余計なコードを入れてみたら、エラーの出現は少なくはなっているように思います。 ただ、本当に対策になっているのかは、わかりません。
御回答頂きありがとうございます。
動作確認いたしました。元の内容よりも進化していてとても満足しています。ありがとうございます。
エラーの原因が分からないのはもやもやしますが、yoreyore様の入れて下さった内容でしばらく使ってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2019 非表示モジュール内...
-
ペイントで取り込んだ画像のサ...
-
Linux再起動後のエラーメッセー...
-
Workbook_openでマクロが実行さ...
-
ステートメントの末尾が不正です
-
イベントプロパティに指定した...
-
.iniファイルが開けません
-
コンパイルエラー『名前付き引...
-
実行時エラー'429'
-
ワードかエクセルで、KOKU...
-
エクセル宛名ラベルが重複する
-
インデックスに印刷する方法
-
文書作成アプリ
-
ACCESS ラベルの枚数を指定して...
-
ワードの差し込み印刷で,ペー...
-
CDラベル剥がれて透明CDに...
-
ゆうパックの宛名ラベルの書き方
-
CDやDVDの表面へのラベル...
-
筆王
-
AccessからWordの差し込み印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2019 非表示モジュール内...
-
VBA+VBSによる別インスタンスB...
-
"echo off"の動きをLinuxのシェ...
-
ステートメントの末尾が不正です
-
イベントプロパティに指定した...
-
VBA オートメーションエラー(...
-
Apache2.4の起動でエラー
-
ペイントで取り込んだ画像のサ...
-
Linux再起動後のエラーメッセー...
-
「パラメータが無効のため、処...
-
[ マクロ ] エラーになったり...
-
ACCESS モジュールで自作した...
-
パソコンのエラーメッセージに...
-
遠隔地にあるパソコンのオフィ...
-
(Windows7)VB6でODBC接続エラー
-
エクセルに埋め込んだPDFの実行...
-
PCのシャットダウン時の警告...
-
Linux用のプリンタドライバにつ...
-
EXCELのエラー表示について
-
IEの Java
おすすめ情報