Excel VBA質問箱 IV

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

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


8644 / 13644 ツリー ←次へ | 前へ→

【32056】コピーについて hatena 05/12/5(月) 16:22 質問[未読]
【32057】Re:コピーについて かみちゃん 05/12/5(月) 16:25 発言[未読]
【32059】Re:コピーについて hatena 05/12/5(月) 16:39 回答[未読]
【32063】Re:コピーについて Jaka 05/12/5(月) 17:20 回答[未読]
【32064】Re:コピーについて Jaka 05/12/5(月) 17:23 発言[未読]
【32068】Re:コピーについて hatena 05/12/5(月) 17:42 お礼[未読]
【32069】Re:コピーについて awu 05/12/5(月) 17:51 回答[未読]
【32071】Re:コピーについて hatena 05/12/5(月) 18:15 お礼[未読]
【32075】Re:コピーについて ganko 05/12/5(月) 21:10 発言[未読]

【32056】コピーについて
質問  hatena  - 05/12/5(月) 16:22 -

引用なし
パスワード
   いつも参考にさせていただいています。

結合と行幅を任意にしていした表Aがあります。
その表をそのままコピーして貼り付けたいのですが
レイアウトがくずれて貼り付けられてしまいます。

コードは
  Range("A1:W10").Select
  Selection.Copy
  Range("A11").Select
  ActiveSheet.Paste

行幅もそのままコピーして貼り付ける方法はありませんか?
どうぞ教えてください。

【32057】Re:コピーについて
発言  かみちゃん  - 05/12/5(月) 16:25 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>行幅もそのままコピーして貼り付ける方法はありませんか?

行の高さですか?
列の幅ですか?
列の幅だと、「形式を選択して貼り付け」の中に「列幅」があるのですが・・・

【32059】Re:コピーについて
回答  hatena  - 05/12/5(月) 16:39 -

引用なし
パスワード
   かみちゃんさんありがとうございます。

行の高さなんです。。。

【32063】Re:コピーについて
回答  Jaka  - 05/12/5(月) 17:20 -

引用なし
パスワード
   列幅、行の高さのコピーは、エクセルバージョンによってないと思います。
97だとそんな物は1つも有りません。

貼り付けた後で、行の高さや列の幅はコピー元のサイズと同じに1個1個変更してください。

【32064】Re:コピーについて
発言  Jaka  - 05/12/5(月) 17:23 -

引用なし
パスワード
   >1個1個
1列または1行づつのことね!

【32068】Re:コピーについて
お礼  hatena  - 05/12/5(月) 17:42 -

引用なし
パスワード
   Jakaさんありがとうございます。

やっぱりそれぞれ設定しなくてはならないのですね。(涙)

でもご親切にありがとうございました。

【32069】Re:コピーについて
回答  awu  - 05/12/5(月) 17:51 -

引用なし
パスワード
   貼付ける行が違うだけですので、列は元々同じと思いますが・・・

W列より右にデータが無く、行をコピーしても良い場合は、

Sub Macro1()
  Rows("1:10").Copy
  Rows(11).Select
  Selection.PasteSpecial Paste:=xlPasteAll
  Application.CutCopyMode = False
End Sub


貼付け先範囲のW列より右にデータがあり、そのまま残す場合や
コピー元範囲の右にコピーしたくないデータがある場合 (ちょっと手間)

こんな感じで如何でしょうか。

Sub Macro2()
Dim Rng As Range
Dim Rw As Long
With Range("A1:W10")
   .Copy
  Range("A11").Activate
  ActiveSheet.Paste
  For Rw = .Row To .SpecialCells(xlCellTypeLastCell).Row
    ActiveCell.Offset(Rw - 1).RowHeight = Rows(Rw).Height
  Next Rw
End With
Application.CutCopyMode = False
End Sub

【32071】Re:コピーについて
お礼  hatena  - 05/12/5(月) 18:15 -

引用なし
パスワード
   awu さん

ありがとうございました!!

右側にデータがない場合のサンプルでできました。

RangeではなくてRowsにすればよかったんですね。

どうもありがとうございました☆

【32075】Re:コピーについて
発言  ganko  - 05/12/5(月) 21:10 -

引用なし
パスワード
   ▼hatena さん:

こんなのもいけるかも
高さも、幅も、セルの統合したのも対応できると思います。
標準のモジュールに…

Sub s_TableCopy()

Dim 元のセル As Range
Dim コピー先 As Range

On Error Resume Next

Set 元のセル = Application.InputBox("コピー元のセルを選択してください", Type:=8)

If 元のセル Is Nothing Then
Exit Sub
End If

Set コピー先 = Application.InputBox("コピー先のセルを選択してください", Type:=8)

If コピー先 Is Nothing Then
Exit Sub
End If

If コピー先.Count <> 1 Then
MsgBox "コピー先の複数セルは選択できません"
Exit Sub
End If


元のセル.Copy Destination:=コピー先

 For I = 1 To 元のセル.Columns.Count
  コピー先.Columns(I).ColumnWidth = 元のセル.Columns(I).ColumnWidth
 Next
 
 For I = 1 To 元のセル.Rows.Count
  コピー先.Rows(I).RowHeight = 元のセル.Rows(I).RowHeight
 Next
 
 
End Sub

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