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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
-
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
テキストボックスにセルの値を複写する方法
Visual Basic(VBA)
-
-
4
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
5
EXCEL VBA コントロールのコピー&ペースト
Excel(エクセル)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
テキストボックスのカーソル位置の取得・設定方法
Visual Basic(VBA)
-
8
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
9
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
10
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
11
ExcelVBAでセルを編集状態にする方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
実行時エラー 3265「要求された...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
上下の位置揃えについて
-
Excelでフィルタをかけると警告...
-
VBScriptでファイルの日時順(降...
-
エクセルVBAで配列内に空白デー...
-
PowerPointVBAでスライドマスタ...
-
AccessVBAで「dim dbs as datab...
-
VBA:オートシェイプの線の長...
-
CreateObjectできるものについて
-
「オブジェクト変数または With...
-
VB6 エクセルに画像貼り付け
-
VBAからPDFファイルにパスワー...
-
エクセルマクロエラー「'Cells'...
-
VBAについてです。 初心者です...
-
VBAで作成するメール(開封確認...
-
VBScriptでExcelのグラフを貼り...
-
[VBA]CDOメッセージ送信エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
エクセルのVBAの標準モジュール...
-
エクセルマクロエラー「'Cells'...
-
Excelでフィルタをかけると警告...
-
VBAで Set wb = Sheets(1).Cop...
-
VBAからPDFファイルにパスワー...
-
テキストボックス中の文字列の...
-
エクセルVBAでcode128のバー...
-
EXCEL VBA オートシェイプナン...
-
VBAで作成するメール(開封確認...
-
PowerPointVBAでスライドマスタ...
-
ある文字列が全て数字であるか...
-
エクセルVBAで配列内に空白デー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
-
UserForm1.Showでエラーになり...
-
上下の位置揃えについて
おすすめ情報