Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
列の切り取り、挿入の際のエラーについて
投稿日時: 20/07/11 12:39:09
投稿者: OkabeS

以下列の切り取り、別の箇所に挿入する場合に、なぜか最下部の以下部分で、エラーが出てしまいます。
Worksheets("Sheet2").Range("H1").EntireColumn.Insert Shift:=xlToRight
どの部分が原因なのでしょうか?
 
■エラーメッセージ
実行時エラー 1004
この選択は適切ではありません。
コピー領域と貼り付け領域が同じサイズかつ同じ形状でない場合は、それらの領域が重ならないようにしてください。
 
 
■コード
 
'列切り取り、貼り付け移動
 
LastRow = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
 
t1 = Worksheets("Sheet2").Rows(1).Find(What:="いぬ", LookAt:=xlWhole).Column
Worksheets("Sheet2").Range(Cells(1, t1), Cells(LastRow, t1 + 4)).Cut
Worksheets("Sheet2").Range("B1").EntireColumn.Insert Shift:=xlToRight
 
 
t2 = Worksheets("Sheet2").Rows(1).Find(What:="ねこ", LookAt:=xlWhole).Column
Worksheets("Sheet2").Range(Cells(1, t2), Cells(LastRow, t2 + 7)).Cut
Worksheets("Sheet2").Range("K1").EntireColumn.Insert Shift:=xlToRight
 
 
t3 = Worksheets("Sheet2").Rows(1).Find(What:="さる", LookAt:=xlWhole).Column
Worksheets("Sheet2").Range(Cells(1, t3), Cells(LastRow, t3)).Cut
Worksheets("Sheet2").Range("G1").EntireColumn.Insert Shift:=xlToRight
 
t4 = Worksheets("Sheet2").Rows(1).Find(What:=きじ, LookAt:=xlWhole).Column
Worksheets("Sheet2").Range(Cells(1, t4), Cells(LastRow, t4)).Cut
Worksheets("Sheet2").Range("H1").EntireColumn.Insert Shift:=xlToRight

回答
投稿日時: 20/07/11 13:41:18
投稿者: simple

エラーになったときのt4の値(列番号)はどうなっていますか?
また、それからどんなことが想像されますか?

回答
投稿日時: 20/07/11 17:39:34
投稿者: MMYS

エラーとは関係ありませんが、対象オブジェクトが
Rangeは指定されてますが、
Cellsには指定されてません。
対象オブジェクト省略はActiveSheetですから、下記は次のように解釈されます。
ですから、アクティブシートがSheet2以外だとエラーです。
 
 
t1 = Worksheets("Sheet2").Rows(1).Find(What:="いぬ", LookAt:=xlWhole).Column
Worksheets("Sheet2").Range(ActiveSheet.Cells(1, t1), ActiveSheet.Cells(LastRow, t1 + 4)).Cut
Worksheets("Sheet2").Range("B1").EntireColumn.Insert Shift:=xlToRight
 

投稿日時: 20/07/12 21:48:20
投稿者: OkabeS

simple様
MMYS様
 
ご回答ありがとうございます。
列切り取り、挿入を何箇所かしている中で、
該当箇所は切り取りと挿入を同じ列で実行していました。
その場合エラーが発生するようです。