###前提・実現したいこと
エクセルVBAにて、数列の複製をするマクロを作成しましたが、下記の問題が解決できず困っています。
下記のマクロを動かすと、エラーが発生する場合があります。大容量のシートの場合に下記のエラーが発生します。
入力規則のあるセルを直前に触り、値を入力した後にマクロを起動した場合に発生するようです。
###発生している問題・エラーメッセージ
.Range(.Columns(第一列左列 + 一台列数 * 繰返し数 + 1), .Columns(第一列左列 + 一台列数 * 繰返し数 + 1)).Insert Shift:=xlToRight
のところで、
実行時エラー'-2147417848(80010108)':
オートメーションエラーです。
起動されたオブジェクトはクライアントから切断されました。
###該当のソースコード ```ここに言語を入力 With ActiveWorkbook.Sheets(MySheet) .Unprotect 第一列左列 = .Cells.Find(What:="第一列左列", After:=.Range(検索開始セル), LookIn:=xlComments, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False).Column '選択された列番号を取得 最終列右列 = .Cells.Find(What:="最終列右列", After:=.Range(検索開始セル), LookIn:=xlComments, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False).Column '選択された列番号を取得 一台列数 = 最終列右列 - 第一列左列 - 1 繰返し数 = 1 Line1: .Range(.Columns(第一列左列 + 1), .Columns(最終列右列 - 1)).Copy .Range(.Columns(第一列左列 + 一台列数 * 繰返し数 + 1), .Columns(第一列左列 + 一台列数 * 繰返し数 + 1)).Insert Shift:=xlToRight 繰返し数 = 繰返し数 + 1 If 繰返し数 < 列複製数 Then GoTo Line1 Application.CutCopyMode = False On Error Resume Next Set シート保護をかけません = .Cells.Find(What:="シート保護をかけません", After:=.Range(検索開始セル), LookIn:=xlComments, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) '選択された行番号を取得 On Error GoTo 0 If シート保護をかけません Is Nothing Then .Protect Else .Unprotect End If End With
###試したこと
入力規則を触った後でも、軽いシートの場合には、発生しません。
###補足情報(言語/FW/ツール等のバージョンなど)
Excelバージョンは2010です。
回答1件
あなたの回答
tips
プレビュー