|
こんばんは。
>Range("A3", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants).EntireRow.Copy
>Sheets("Sheet2").Select
>Range("A1").Select
>ActiveSheet.Paste
>
>ところがこの場合、例えばA3とA4に数字が入っている場合はコピーされますが、A3だけの場合はコピーされないことがわかりました。
例えば
A B C D
1
2
3 1 2 3 4
4 5 6 7
Sheet1に上記のようなデータは位置の場合、
Sub test0()
Range("A3", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants).EntireRow.Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
End Sub
このコードを実行すると、「そのコマンドは複数の選択範囲に対して実行できません」
というエラーが
Range("A3", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants).EntireRow.Copy
↑この行で発生し、プログラムが止まります。
Range("A3", Cells(Rows.Count, 1).End(xlUp))
この記述で上記のデータ配置で取得するセルは、A3だけですよね?
単一セルに対して、SpecialCells(xlCellTypeConstants)メソッドは、
cells.SpecialCells(xlCellTypeConstants) で取得できるセル範囲と同値です。
結果として、
Range("A3", Cells(Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeConstants).EntireRow
は、 $3:$3,$3:$4 という複数のエリアを持つセル範囲になってしまい、
コピーが出来ないという趣旨のメッセージが表示されます。
修正は、Range("A3", Cells(Rows.Count, 1).End(xlUp))これで取得するセルの数を
1とそれ以外で処理を分けるか、
UO3さんの投稿のように元のコードで対応するかですね!!
|
|