Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11930 / 76734 ←次へ | 前へ→

【70333】Re:最終行までの範囲取得について
発言  ichinose  - 11/11/2(水) 18:53 -

引用なし
パスワード
   こんばんは。


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

【70327】最終行までの範囲取得について どぢょりん 11/11/2(水) 1:15 質問
【70328】Re:最終行までの範囲取得について UO3 11/11/2(水) 6:01 発言
【70333】Re:最終行までの範囲取得について ichinose 11/11/2(水) 18:53 発言
【70335】Re:最終行までの範囲取得について 訂正 ichinose 11/11/2(水) 19:39 発言
【70338】Re:最終行までの範囲取得について 訂正 どぢょりん 11/11/2(水) 23:34 お礼

11930 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free