「教えて!ピックアップ」リリース!

Excelで行を非表示した部分を含めペーストしたいのですがA列のように非表示された部分にもペースト部分が貼りついてしまいます。非表示行を除いてC列のようにペーストしたいのですがどなたか解決策を教えていただくと助かります。

「Excelのペーストについて」の質問画像

A 回答 (4件)

No2です



ごく簡単なものを作成してみましたので、ご参考までに。

セル範囲をコピーした状態で、「ペースト」の代わりに実行します。
処理の性質から、ペーストは「値のペースト」になります。(書式等のコピーはされません)
ペースト可能な範囲(=表示エリア)が、コピー範囲よりも小さい場合などにはエラーになります。
セルの結合等はチェックしていません。
非表示の行(列)が存在しない場合は、通常の値のペーストと同様となります。
1セルずつ表示状態をチェックしてペーストする方式なので、行や列全体をコピーするとそれなりに時間がかかります。
(限定したセル範囲をコピーしておく方が宜しいでしょう)


Sub Q12833465()
Dim sht, Rrow, Rcol, v
Dim r As Long, c As Long, mes As String

Set sht = ActiveSheet
Set Rrow = ActiveCell
Application.ScreenUpdating = False

With Worksheets.Add(after:=sht)
On Error GoTo EndProc
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues
v = Selection.Value
On Error GoTo ErrorProc

For r = 1 To UBound(v)
While Rrow.EntireRow.Hidden
Set Rrow = Rrow.Offset(1)
Wend
Set Rcol = Rrow
For c = 1 To UBound(v, 2)
While Rcol.EntireColumn.Hidden
Set Rcol = Rcol.Offset(, 1)
Wend
Rcol.Value = v(r, c)
Set Rcol = Rcol.Offset(, 1)
Next c
Set Rrow = Rrow.Offset(1)
Next r
GoTo EndProc

ErrorProc:
mes = "貼付けに失敗しました"
EndProc:
On Error GoTo 0
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = False
End With
sht.Activate
Application.ScreenUpdating = False
If Len(mes) Then MsgBox mes
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました!ショートカットキーで割り当て使用したら問題なく利用できました。

お礼日時:2022/03/04 12:51

Option Explicit


Sub Sample()
Dim r As Long, rng As Range
For Each rng In Range("C1:C13").SpecialCells(xlCellTypeVisible)
r = r + 1
rng = Range("E10:E17")(r)
Next rng
End Sub
    • good
    • 0

こんにちは



すでに回答があるように、通常の操作では無理ですね。

どうしても実現したければ、自分用に「非表示の行(列)を飛ばしてペーストする」マクロを作成して、ショートカットキー等に登録しておくとかでしょうか。
2次元のセル範囲まで対応すると、多少面倒かもしれませんが、作成できる力量がおありであればそのような方法もあろうかと。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
マクロを作成しショートカットで操作できればいいですよね。
私には作成することが知識がなく無理ですね。

お礼日時:2022/03/04 10:36

可視セルだけのコピーはできるのですが、可視セルだけへのペーストは、領域のサイズ(形状)が異なってしまうためできないのです。

「Excelのペーストについて」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング