
VBA初心者です。
日程表にテキストボックスをコピーして貼り付けるために、見よう見真似で「給食」と入力されたテキストボックスをコピーし、アクティブセルに貼り付けるVBAを作成しましたが、実行するとコピー元のテキストボックスが選択されてしまいます。
Sub 給食のコピー()
ActiveSheet.Shapes.Range(Array("給食")).Select
Selection.Copy
ActiveSheet.Paste Destination:=ActiveCell
End Sub
やりたいことは
①「給食」と入力されたテキストボックスをコピーし、アクティブセルに貼り付けた後のテキストボックス(オブジェクト)の名前を給食1、給食2・・・というように名前を変えたい(コピー元の「給食」の名前のテキストボックス(オブジェクト)は残しておきたいので貼り付けたテキストボックス(オブジェクト)の名前が変わればOKです)
②アクティブセルには元々文字が入力されているため、セルの右側に貼り付けられるようにしたい
「給食」のほかに「弁当」や「買い出し」といったテキストボックスがあり、それぞれボタンを作成し、ボタンを押せばアクティブセルに挿入されるようにしています。
(分かりやすいようにテキストボックスに入力されている文字とテキストボックス(オブジェクト)の名前を同じにしています)
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
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
とか。
No.2
- 回答日時:
発想としては自由でですが、ずいぶん難しいことを考えるのですね。
・「給食」と入力されたテキストボックス
・テキストボックス(オブジェクト)の名前も給食
・テキストボックス(オブジェクト)の名前が変わる
私なら、思い当たるエラー対策を取ります。
'//
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
ご回答、ありがとうございました。
早速やってみましたが、アクティブセルの一つ右側のセルに貼り付けされるのと、テキストボックス内の文字をカタカナにした場合、貼り付けられたテキストボックス内の文字が半角になってしまうのと、貼り付けられたテキストボックス名の最後の数字(0ゼロ?)がテキストボックス内にも入力されてしまいました。
自分では難しすぎて直せないため、最初に回答くださった方のやり方でやることにしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) シート間で同じ値があったらコピペ 1 2022/05/08 09:39
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Word(ワード) 分かる方教えてください。 wordに図を差込して資料を作成してますが その図上の説明したい箇所に①と 3 2022/10/20 20:05
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
VBScriptからDLL参照設定したい
-
VBAについてです。 初心者です...
-
VBAで既に開いている別アプリケ...
-
エクセルVBAで配列内に空白デー...
-
テキストボックス中の文字列の...
-
AccessVBAで「dim dbs as datab...
-
オブジェクト変数またはWITHブ...
-
ExcelVBAでのNZ関数について
-
Shell.ApplicationのNameSpace...
-
Excel VBA Collection.add で R...
-
列、行番号などをDebug.Printす...
-
InternetExplorer.Application...
-
VBA オブジェクトが空かどうか...
-
CreateObjectとGetObjectの違い
-
ExcelのVBAについて(グラフ操作)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
EXCEL VBA オートシェイプナン...
-
VBAで Set wb = Sheets(1).Cop...
-
ExcelVBAでのNZ関数について
-
[VBA]CDOメッセージ送信エラー
-
VBAからPDFファイルにパスワー...
-
エクセルVBAでcode128のバー...
-
VBScriptからDLL参照設定したい
-
VBAについてです。 初心者です...
-
エクセルマクロエラー「'Cells'...
-
オブジェクトが見つかりません
-
エクセルVBAで配列内に空白デー...
-
Excel VBAでWordの複数ファイル...
-
VBScriptでファイルの日時順(降...
おすすめ情報