>エクセルVBAのコマンドボタンをシートに配置
「コマンドボタン」とありますので、ActiveX コントロールでしょうか。
『セルに合わせて移動やサイズ変更をしない』で行挿入・列挿入による変化はありませんでしたが
セル全体のコピー貼付だと確かにズレますね。
(1)ズレる事はあきらめて、セルに変更があれば戻すではだめでしょうか?
シートモジュールに以下のコードを貼付てください。
(コマンドボタン名はCommandButton1とした例)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mySize As Variant
'"Height,Width,Top,Left"の順で値を設定
mySize = Split("67.5,216,40.5,54", ",")
With ActiveSheet.CommandButton1
.Height = mySize(0)
.Width = mySize(1)
.Top = mySize(2)
.Left = mySize(3)
End With
End Sub
(2)Ctrl+vでの貼付を値で張り付けにしてしまう方法
ThisWorkbookモジュールに以下のコードを貼付
''ショートカットを設定するマクロ
Private Sub Workbook_Open()
Dim mcro As String
'[Ctrl]+[v]に"custom_paste"を割当てる。
mcro = "custom_paste"
Call Application.OnKey("^v", mcro)
Debug.Print "Ctrl+Vに" & mcro & "をセットしました"
End Sub
標準モジュールに以下のコードを貼付
Sub custom_paste()
Selection.PasteSpecial Paste:=xlPasteValues
End Sub
ファイルを保存後、開き直すとCtrl+Vでの貼付が「値のみ」の貼付になります。
(ただしエクセルメニューからの貼付は通常動作します)