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
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
6
EXCEL VBA コントロールのコピー&ペースト
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
テキストボックスのカーソル位置の取得・設定方法
Visual Basic(VBA)
-
9
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
10
ExcelVBAでセルを編集状態にする方法
Excel(エクセル)
-
11
UserForm1.Showでエラーになります。
工学
-
12
エクセルVBA 図形の選択法は?
Visual Basic(VBA)
-
13
VBAのリストボックスをマウスでスクロール
PowerPoint(パワーポイント)
-
14
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
15
エクセルテキストボックスの文字列をセルに引っ張ってくるやり方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで既に開いている別アプリケ...
-
worksheetFunctionクラスのVloo...
-
VBAからPDFファイルにパスワー...
-
EDINETの情報をEXCELにダウンロ...
-
VB6.0上でExcelオブジェクトを生成
-
エクセルVBAでcode128のバー...
-
EXEL2000のマクロが2010でエラ...
-
Word2007数式でIMEオン/オフを...
-
UserForm1.Showでエラーになり...
-
エクセルVBAでテキストボックス...
-
Excelでフィルタをかけると警告...
-
EXCEL VBA オートシェイプナン...
-
上下の位置揃えについて
-
ドロップダウンリストの行を増...
-
横軸ラベルの追加に関するエラ...
-
[C#]static void 関数内でthis
-
AccessVBA NULLについて
-
マクロ初心者です。 インデック...
-
「Columns("A:C")」の列文字を...
-
エクセルVBAの散布図の近似曲線...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
エクセルマクロエラー「'Cells'...
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
ある文字列が全て数字であるか...
-
VBAからPDFファイルにパスワー...
-
VBScriptでファイルの日時順(降...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
エクセルVBAで2つの画像を比較...
-
PowerPointVBAでスライドマスタ...
-
UserForm1.Showでエラーになり...
-
上下の位置揃えについて
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
おすすめ情報