[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『列の挿入をするとエラーになる』(ぴーちゃん)
お世話になっております。
シートにデータを転記したのち、そのシートを加工するために
列を挿入しています。
1行のみ挿入する場合
Columns("S:S").Insert Shift:=xlToRight
複数行挿入する場合
Columns("AD:CA").Insert Shift:=xlToRight
上記マクロで列を挿入しているのですが、
実行時エラー 1004
空でないセルをワークシートの外に押し出してしまうため、新しいセルを挿入できません。
空のように見えるセルであっても、空白の値、書式、または数式が含まれている場合があります。
挿入するための領域を確保できるように十分な行または列を削除してから、もう一度やり直してください。
というエラーメッセージが出てしまいます。
新しいシートで試したりしたのですが、このエラーがでてしまいます。
ご教示いただきたく、宜しくお願いいたします。
< 使用 Excel:unknown、使用 OS:unknown >
いらんのが付いてます。 ↓だけでいけるはずです。
Columns("AD:CA").Insert
(通りすがり) 2021/04/05(月) 17:20
とりあえず、イミディエイトウィンドウに これを入れると、使用範囲が出ますので、どうなっているのかチェックしてみたらどうですか? ↓ ? ActiveSheet.UsedRange.Address
右端いっぱいになっていますかね?
(半平太) 2021/04/05(月) 17:23
衝突しましたがそのままアップします。
↑は間違いでした。
メッセージのとおり、列挿入することによって、列限界より外に 押し出されるセルが存在するので警告を発してます。 (通りすがり) 2021/04/05(月) 17:26
新規シートでも出ますか。見落としてました。 新規ブックでも同じですか? (通りすがり) 2021/04/05(月) 17:34
半平太様
ご回答いただきありがとうございます。
イミディエイトウィンドウは、ほぼ使ったことないのですが
下記入力し、エンターキーを押しました。
? ActiveSheet.UsedRange.Address
$A$1:$IT$44 → 当初はこのように表示されましたが、
$1:$44 → 今はこの表示しか出なくなってしまいました。
すみません。状況お分かりになりますでしょうか?
(ぴーちゃん) 2021/04/05(月) 17:57
1行目〜44行目全体に書式が設定された、ということも 考えられます。 新規シートで試した、ということですが、新規シートの挿入 は手作業ですか?マクロですか? (通りすがり) 2021/04/05(月) 18:25
まさか、とは思いますが、CTRLキーを押しながらシートタブ ドラッグでシートをコピーしたものを「新規シート」と呼んでる、 ということはありませんか? (通りすがり) 2021/04/05(月) 18:27
エラーの出る行だけでなく、マクロ全体を書き込んだ方がいいです エラーの原因がエラー発生行以外にあることは良くあります。
あるあるとしては、 Range("ほげ").End(xlToRight) のセルを操作したりなんかしてたり、
姑息的手段としては、 Columns(Columns.Count - 50).Resize(, 50).Delete Columns("AD:CA").Insert Shift:=xlToRight でエラー回避できますが、 抜本的に見直さないと副作用があるかもしれません。 (´・ω・`) 2021/04/05(月) 18:42
Sub test() With ActiveSheet .Columns(.Columns.Count).Offset(, -49).Resize(, 50).Clear .Columns("AD:CA").Insert Shift:=xlToRight End With End Sub
(もこな2) 2021/04/05(月) 21:52
Sub test()
Sheets("list3").Select
Dim Wsh1 As Worksheet Dim Wsh2 As Worksheet Dim TgtRng As Range Dim CriRng As Range
Set Wsh1 = Sheets("list1") Set Wsh2 = Sheets("list2")
Set TgtRng = Wsh1.Range("A1:BF" & Wsh1.Cells(Wsh1.Rows.Count, "G").End(xlUp).Row) Set CriRng = Wsh2.Range("B2", Wsh2.Range("B2").End(xlDown))
With Sheets("list3") .UsedRange.ClearContents TgtRng.AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=CriRng, CopyToRange:=.Range("A1"), Unique:=False End With
End Sub
その後、まず、左端に2行挿入したいのですが、
この時点でも、エラーがでるようになりました。(初めはここではエラーは出なかったのですが、今はでます。)
'2行挿入 Columns("A:A").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
その後、不要な行を削除したのち、
こちらで質問させていただいた行の挿入をすると、エラーがでます。
(いつも同じ箇所でエラーが出るのではなく、マクロを起動すると、どこかの行挿入でエラーが出ている状態です)
1行のみ挿入する場合
Columns("S:S").Insert Shift:=xlToRight
複数行挿入する場合
Columns("AD:CA").Insert Shift:=xlToRight
実際は、上記よりもっと挿入する行は多く、最終的にリスト3は、A~CH列まであります。(もう数行増える予定です)
新規シートは、手作業で、バツボタンを押して新規シートを作成しました。
回答いただいたものすべてを試せていなくすみません。
取り急ぎ、ご連絡させていただきます。
ご教示いただきたく宜しくお願いいたします。
(ぴーちゃん) 2021/04/06(火) 23:52
エラーの原因は皆さんがおっしゃる通りだとおもいますが、↓を実行するとどうなりますか?
Sub さんぷる() Dim データ範囲 As Range Dim 抽出条件 As Range
With Sheets("list1") Set データ範囲 = .Range("A1:BF" & .Cells(.Rows.Count, "G").End(xlUp).Row) End With
With Sheets("list2") Set 抽出条件 = .Range("B2", .Range("B2").End(xlDown)) End With
With Sheets("list3") .UsedRange.Clear '←ClearContentsから変更
データ範囲.AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=抽出条件, _ CopyToRange:=.Range("C1") '←直後に2【列】挿入するなら初めからC列に出力すべき
'▼50【列】挿入 .Range("AD").EntireColumn.Resize(, 50).Insert End With End Sub
(もこな2) 2021/04/07(水) 05:56
誤 .Range("AD").EntireColumn.Resize(, 50).Insert 正 .Range("AD1").EntireColumn.Resize(, 50).Insert
(もこな2 ) 2021/04/07(水) 19:33
(ぴーちゃん) 2021/04/08(木) 17:56
.UsedRange.Clear '←ClearContentsから変更
↑のように、Clearメソッドに変更し、書式も含めてクリアしたわけです。
(もこな2 ) 2021/04/08(木) 19:41
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.