dポイントプレゼントキャンペーン実施中!

VBA初心者です。
日程表にテキストボックスをコピーして貼り付けるために、見よう見真似で「給食」と入力されたテキストボックスをコピーし、アクティブセルに貼り付けるVBAを作成しましたが、実行するとコピー元のテキストボックスが選択されてしまいます。

Sub 給食のコピー()
ActiveSheet.Shapes.Range(Array("給食")).Select
Selection.Copy
ActiveSheet.Paste Destination:=ActiveCell
End Sub

やりたいことは
①「給食」と入力されたテキストボックスをコピーし、アクティブセルに貼り付けた後のテキストボックス(オブジェクト)の名前を給食1、給食2・・・というように名前を変えたい(コピー元の「給食」の名前のテキストボックス(オブジェクト)は残しておきたいので貼り付けたテキストボックス(オブジェクト)の名前が変わればOKです)
②アクティブセルには元々文字が入力されているため、セルの右側に貼り付けられるようにしたい

「給食」のほかに「弁当」や「買い出し」といったテキストボックスがあり、それぞれボタンを作成し、ボタンを押せばアクティブセルに挿入されるようにしています。
(分かりやすいようにテキストボックスに入力されている文字とテキストボックス(オブジェクト)の名前を同じにしています)

よろしくお願いいたします。

A 回答 (2件)

Sub 給食のコピー()


  Dim shp As Shape
  Set shp = ActiveSheet.Shapes("給食").Duplicate
  shp.Name = "給食2"
  shp.Top = ActiveCell.Top
  shp.Left = ActiveCell.Left + ActiveCell.Width - shp.Width
End Sub

とか。
    • good
    • 0
この回答へのお礼

助かりました

早々の回答、ありがとうございました。
早速やってみたところ、できました。
活用させていただきたいと思います。

お礼日時:2017/04/28 19:49

発想としては自由でですが、ずいぶん難しいことを考えるのですね。



・「給食」と入力されたテキストボックス
・テキストボックス(オブジェクト)の名前も給食
・テキストボックス(オブジェクト)の名前が変わる

私なら、思い当たるエラー対策を取ります。
'//
Sub TextBox4Copy()
 Dim txb As TextBox
 Dim FirstTxb As TextBox
 Dim tmpBox As TextBox
 Dim cnt As Long
 Const txName As String = "給食"
 'セルにカーソルがない時
 If TypeName(Selection) <> "Range" Then
  MsgBox "セルを選択肢てください", vbCritical
  Exit Sub
 End If
 'オブジェが見つからないとき
 On Error Resume Next
 Set FirstTxb = ActiveSheet.TextBoxes(txName)
 If Err() <> 0 Then
  MsgBox txName & "オブジェクトが見つかりません。", vbCritical
  Exit Sub
 End If
 On Error GoTo 0
 Set tmpBox = FirstTxb.Duplicate
 With ActiveCell  'offset(,1) は右側の意味
  tmpBox.Left = .Offset(, 1).Left + 1 僅かに内側にずらす
  tmpBox.Top = .Top
  tmpBox.Width = .Offset(, 1).Left - .Left - 1
  tmpBox.Height = .Height
  tmpBox.Name = txName & cnt 'オブジェクトの名前
  tmpBox.Caption = txName & cnt '表示の名前
  ''デフォルトな高さですと、文字が欠けますので、フォントサイズを下げる
  'tmpBox.ShapeRange.TextEffect.FontSize = 9
 End With
End Sub
    • good
    • 0
この回答へのお礼

うーん・・・

ご回答、ありがとうございました。
早速やってみましたが、アクティブセルの一つ右側のセルに貼り付けされるのと、テキストボックス内の文字をカタカナにした場合、貼り付けられたテキストボックス内の文字が半角になってしまうのと、貼り付けられたテキストボックス名の最後の数字(0ゼロ?)がテキストボックス内にも入力されてしまいました。
自分では難しすぎて直せないため、最初に回答くださった方のやり方でやることにしました。
ありがとうございました。

お礼日時:2017/04/28 19:49

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

このQ&Aを見た人はこんなQ&Aも見ています