Excel VBA 質問スレッド №903 (解決済)

VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする

投稿者 : TG     投稿日時 : 2022/07/26(Tue) 15:02:31     OS : Windows 11     EXCEL : Excel 2021
VBAを使わずに範囲を選択、Ctrl+C、貼り付け先を選択、Ctrl+Vであれば
フォームコントロールのボタンと設定されているマクロがちゃんとコピーされるのですが

VBAで範囲を選択、選択範囲をコピー、貼り付け先を選択、コピーしたセルを貼り付けとすると
フォームコントロールのボタンだけは一切貼り付けされない状態です。

どのようにすればフォームコントロールのボタンごとコピーできるのでしょうか?

貼り付け先はテーブル内の最終行1個下の空白セルとなります。

スポンサーリンク
[返信 1] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : 名無し     投稿日時 : 2022/07/26(Tue) 18:36:21

> VBAで範囲を選択、選択範囲をコピー、貼り付け先を選択、コピーしたセルを貼り付けとすると
> フォームコントロールのボタンだけは一切貼り付けされない状態です。

テストしたところ貼りつきます。
コードを載せた方が良いと思います。


> 貼り付け先はテーブル内の最終行1個下の空白セルとなります。

「Excel VBA 最終行の取得」等で調べてみてください。

[返信 2] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : ピロリ     投稿日時 : 2022/07/26(Tue) 20:05:02
■[質問] TGさん(2022-07-26 15:02:31)の記事
> どのようにすればフォームコントロールのボタンごとコピーできるのでしょうか?

ソースコードが分からないので下記サンプルで試してみましたが、名無しさん と同じく
問題無くボタンもコピーできました。。。
Sub test()
    
   'test1
    Range("A1").Copy
    Range("B1").Select
    ActiveSheet.Paste
    
   'test2
    Range("A1").Copy Destination:=Range("B2")
    
End Sub

[返信 3] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : 名無し     投稿日時 : 2022/07/26(Tue) 20:46:37
ちなみに私が試したコードも載せておきます。
B2セルにフォームコントロールのボタンを作って試しました。

>VBAで範囲を選択、選択範囲をコピー、貼り付け先を選択、コピーしたセルを貼り付け
この部分を忠実にコードにしたつもりです。

Sub main()

    ThisWorkbook.Worksheets(1).Range("A1:C3").Select
    Selection.Copy
    Range("A4").Select
    ActiveSheet.Paste
    
End Sub

[返信 4] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : TG     投稿日時 : 2022/07/27(Wed) 08:43:37
ご返信ありがとうございます。

ActiveSheet.Pasteではなく

Selection.PasteSpecial Paste:=xlPasteAllで張り付けていたのが悪かったようです。
お手数おかけしました。

[返信 5] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : 名無し     投稿日時 : 2022/07/27(Wed) 09:07:20
■[返信 4] TGさん(2022-07-27 08:43:37)の記事
>> ご返信ありがとうございます。
>>
>> ActiveSheet.Pasteではなく
>>
>> Selection.PasteSpecial Paste:=xlPasteAllで張り付けていたのが悪かったようです。
>> お手数おかけしました。


>VBAを使わずに範囲を選択、Ctrl+C、貼り付け先を選択、Ctrl+Vであれば
>Selection.PasteSpecial Paste:=xlPasteAllで張り付けていたのが悪かったようです。

上記の2行から誤解をされている部分があるので補足です。
Ctrl+Vと形式をつけて貼り付けは違う操作ですよね。

VBAではなく、手で実行しても、Ctrl+Vと、形式をつけて貼り付けで「全て」を選ぶのでは
結果が変わります。ぜひこの機会に、手で実行して試してみてください。

PasteSpecialが形式をつけて貼り付けという命令で、
Paste:=xlPasteAllがすべてを選択してという命令です。

[返信 6] Re : VBAでセル内に設置されているフォームコントロールをマクロごと別のセルへコピーする
投稿者 : TG     投稿日時 : 2022/07/27(Wed) 09:50:08
■[返信 5] 名無しさん(2022-07-27 09:07:20)の記事
> ■[返信 4] TGさん(2022-07-27 08:43:37)の記事
> >> ご返信ありがとうございます。
> >>
> >> ActiveSheet.Pasteではなく
> >>
> >> Selection.PasteSpecial Paste:=xlPasteAllで張り付けていたのが悪かったようです。
> >> お手数おかけしました。


> >VBAを使わずに範囲を選択、Ctrl+C、貼り付け先を選択、Ctrl+Vであれば
> >Selection.PasteSpecial Paste:=xlPasteAllで張り付けていたのが悪かったようです。

> 上記の2行から誤解をされている部分があるので補足です。
> Ctrl+Vと形式をつけて貼り付けは違う操作ですよね。

> VBAではなく、手で実行しても、Ctrl+Vと、形式をつけて貼り付けで「全て」を選ぶのでは
> 結果が変わります。ぜひこの機会に、手で実行して試してみてください。

> PasteSpecialが形式をつけて貼り付けという命令で、
> Paste:=xlPasteAllがすべてを選択してという命令です。




たしかにCtrl+Vのペースト=PasteSpecialと認識しておりました。
ありがとうございます。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2026-04-03 11:24:45 )
タイトルとURLをコピーしました