| 
    
     |  | こんばんは。 
 
 >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さんの投稿のように元のコードで対応するかですね!!
 
 
 |  |