[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『可視セルの選択及びコピーをVBAでしたい』(ニコ)
可視セル範囲(A列〜D列)を選択し、
別のワークシートに貼り付けたいのですが、
1つ制限があり、処理方法で困っています。
現状の処理内容を記載しますので、教えて下さい。
困っている事項は、
可視セル範囲で選択した範囲の最下段の1行を
選択せずに別のワークシートにコピーしたいです。
(データ量は日々変化しますので、行の数は可変です。)
現状の処理方法。(最下段を含んだ可視セルの選択となっています。)
Sheets("Sheet1").Select
Range("A1:D1").Select Range(Selection, Selection.End(xlDown)).Select Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy
< 使用 Excel:Excel2010、使用 OS:Windows8 >
Option Explicit
Sub test() Dim r As Range
Set r = Range("A1").CurrentRegion.Columns("A:D") Set r = r.Resize(r.Rows.Count - 1)
r.SpecialCells(xlCellTypeVisible).Copy
End Sub
(マナ) 2018/10/11(木) 20:07
Set r = r.Resize(r.Rows.Count - 1)
なんでここ、1行減らすんです?減らす必要はないような・・・
ちなみに、質問とは関係ないですが、ニコさんが提示されたコードの最終行を取り出すところだけ整理しなおすと
Debug.Print Range("A1:D1").End(xlDown).Row
↑みたいな感じになるとおもいますが、この場合返ってくるのは、A列の最終行であって、B〜D列は考慮されないと思いますので、マナさんのように一旦表としてとらえて、表の最終行をしらべるなり、↓のように各列の最終行を一度求めてからそのうち最大値を最終列として採用するようにしたほうがよいとおもいます。
Sub 実験() Dim MyROW(1 To 4) As Long Dim i As Long
For i = 1 To 4 MyROW(i) = Cells(1, i).End(xlDown).Row Next i
Range("A1:D1").Resize(Application.Max(MyROW)).SpecialCells(xlCellTypeVisible).Copy
End Sub
(もこな2) 2018/10/11(木) 22:12
可視範囲の最終行だけを省くんですか。
最終行判定はA列で問題ないなら、以下でどうですか?
Sub test()
Range("D1", Range("A" & Rows.Count).End(xlUp).Offset(-1)).SpecialCells(xlCellTypeVisible).Copy
End Sub
xlDownじゃないと不具合あるなら以下で。
Sub test2()
Range("D1", Range("A1").End(xlDown).Offset(-1)).SpecialCells(xlCellTypeVisible).Copy
End Sub
test2を追記しました。(6:36)
(sy) 2018/10/12(金) 06:27
>可視セル範囲で選択した範囲の最下段の1行を選択せず
というのは、”選択”されることが問題じゃなくて、コピー範囲範囲に含まれちゃうことが問題だったんですね。失礼しました。
(もこな2) 2018/10/12(金) 09:53
よくよく考えたらコピペの場合は .SpecialCells(xlCellTypeVisible) は無くても良かったです。 以下で良かったです。
Sub test2()
Range("D1", Range("A1").End(xlDown).Offset(-1)).Copy
End Sub
(sy) 2018/10/12(金) 19:58
そうでした。わたしも元のコードにつられてしまいました。
(マナ) 2018/10/12(金) 20:06
マナさんのコード、CurrentRegionは非表示セルも対象になってしまうので、 最終行が非表示の時には、可視セルの最終行を省く事が出来ませんね。
(sy) 2018/10/12(金) 20:11
(マナ) 2018/10/12(金) 20:18
「それでもいいのだと思いました。」
が正しいです。
わたしが推測していたのは
実際のデータはテーブル設定になっていて、最終行が集計行。
で、フィルターで非表示になっている行がある。
なので、最終行は、いつも表示されているけれども
コピーはしたくないのかと。
妄想です。
(マナ) 2018/10/12(金) 20:35
テーブルって使った事ないから知らなかった。 最終行の下に集計行を挿入できたんですね。 ちゃんと範囲の増減も可能とは。
失礼しました。 マナさんの読み(妄想(笑))通りの可能性が高いですね。
(sy) 2018/10/12(金) 21:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.