
No.1ベストアンサー
- 回答日時:
コントロールは編集モードならコピーできると思いますが、実行モードで普通にコピー&ペーストを行ってもできないと思われます。
素人の力技ですが下記マクロを作ってみました。おもしろい問題でけっこうはまってしまいました。長くなるので選択状態のチェック等は行っていません。m(_ _)m
同一シートのみで可能です。標準モジュールに貼り付けます。
ショートカットキー Ctrl+Shift+A 等に割り当てて下さい。
コピー元を選択し、コントロールキーを押しながら貼り付け先の左上セルを選択します
順番は逆でもかまいません。複数セルが含まれる矩形セル範囲と単一のセルが指定されていることが要件です。
(これは単一セルと単一セルのコピーと他シートへのコピーは対応していません。)
参考にして下さい。
Public Sub ShapesCopy()
Dim rgCopy As Range 'コピー元セル範囲
Dim rgPaste As Range '貼り付けるセル(左上)
Dim rgShape As Range 'コピー元にあるコントロールの左上セル
Dim myShape As Object '1つのコントロール
Dim rowCopy, clmCopy As Long 'コピー元の左上セルの行、列番号
Dim rowPaste, clmPaste As Long '貼り付けるセルの行、列番号
Dim disRow, disClm As Long 'コピー元と貼り付け先の行・列の隔たり
'*** 選択セルをコピー元と貼り付け先に分離 ***
With Selection
If .Areas(1).Count = 1 Then
Set rgCopy = .Areas(2)
Set rgPaste = .Areas(1)
ElseIf .Areas(2).Count = 1 Then
Set rgCopy = .Areas(1)
Set rgPaste = .Areas(2)
Else
Exit Sub '厳重なチェックは省略しています。
End If
End With
'*** コピー元と貼り付け先の隔たりを計算 ***
rowCopy = rgCopy.Cells(1, 1).Row
clmCopy = rgCopy.Cells(1, 1).Column
rowPaste = rgPaste.Cells(1, 1).Row
clmPaste = rgPaste.Cells(1, 1).Column
disRow = rowPaste - rowCopy '行の隔たり
disClm = clmPaste - clmCopy '列の隔たり
'*** コピー実行 ***
'===== セル =====
rgCopy.Copy: rgPaste.Select: ActiveSheet.Paste
'===== コントロール =====
For Each myShape In ActiveSheet.Shapes 'シート内のコントロールを探す
Set rgShape = Range(myShape.TopLeftCell.Address)
If Union(rgCopy, rgShape).Address = rgCopy.Address Then
'コントロールの左上セルがコピー元内にある場合はコピーする
myShape.Copy
Range(rgShape.Address).Offset(disRow, disClm).Select
ActiveSheet.Paste
End If
Next
rgPaste.Select
End Sub
力作をありがとうございます。
せっかく作成していただいて申し訳ないのですが、
VBAでコピー範囲を選択してペーストしたら図も一緒にペーストされました。
そのソースをいかに示します。
Dim xl As Object
xl.Application.Sheets("TEMP").Range("A1:AN34").Copy xl.Application.Sheets("DATA").Range("A" & CStr(1 + 34 * TotalPage))
これで、TEMPシートのA1:AN34をコピーして、
DATAシートのA列(1 + 34 * TotalPage)行目にペーストしました。
私は別の方法でコピー&ペーストしていたのですが、
同僚がこのロジックで図のペーストができたというので試してみたら、本当にできました。
ご迷惑をおかけしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Evernote Simplenoteのコピー&ペースト 1 2022/05/17 14:09
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Visual Basic(VBA) vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002 1 2023/01/28 14:29
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのアポストロフィを一...
-
エクセル:マクロ「Application...
-
エクセルで隣接していない複数...
-
エクセルVBA/イベント発生でコ...
-
Excel 行の連続データを列に参...
-
エクセルの2ページ目の作り方
-
Excelに、ダブルクォーテーショ...
-
エクセル 別シートへのコピー...
-
【マクロ】オートフィルターの...
-
エクセルで、選択範囲の数値全...
-
エクセルで勝手に「折り返して...
-
メールソフト「サンダーバード...
-
エクセルで値だけコピーして背...
-
「選択範囲を解除してアクティ...
-
Excel2013vba高速化(行の高さコ...
-
Excel)軽いデーターのはずなの...
-
【エクセル】行の高さを規則的...
-
Excelでコピーをとったセルの色...
-
エクセルでの行数・列数を指定...
-
行数の違う表に複数行をコピーする
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルで勝手に「折り返して...
-
エクセルで隣接していない複数...
-
メールソフト「サンダーバード...
-
【マクロ】オートフィルターの...
-
エクセルの2ページ目の作り方
-
Excel 行の連続データを列に参...
-
エクセルで、選択範囲の数値全...
-
エクセル 別シートへのコピー...
-
「選択範囲を解除してアクティ...
-
Excelに、ダブルクォーテーショ...
-
エクセルで値だけコピーして背...
-
エクセルで「コピーしたセルの...
-
EXCEL数値が存在する列の項目名...
-
エクセル コピーしたデータを1...
-
行数の違う表に複数行をコピーする
-
EXCELで「行と列を入れ替える」...
-
エクセルでの行数・列数を指定...
-
エクセル・数値が変化したらカ...
おすすめ情報