- ベストアンサー
セルの内容をテキストボックスに移動する方法
- Excelでセルに文字を書き込んでいるが、融通性のあるレイアウトを作成するためにテキストボックスに変えたい
- 一連の作業を効率的に行うためにショートカットを利用し、セルの内容を新しいテキストボックスに移動する
- または、一部または全ての作業をマクロに記録して簡単に実行できるようにしたい
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんなカンジでマクロを作成し Sub macro1() Dim h As Range For Each h In Selection If h.Text <> "" Then With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, h.Left, h.Top, h.MergeArea.Width, h.MergeArea.Height).TextFrame .Characters.Text = h.Text .MarginLeft = 0 .MarginRight = 0 .MarginTop = 0 .MarginBottom = 0 End With h.MergeArea.ClearContents End If Next End Sub テキストボックス化したいセル範囲をアバウトに選択しておいて実行すると,テキストボックス化します。
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
>できれば、元のセルデータを消した状態で、後任者に渡したいのです。 この場合はマクロを使うしかありません。 >「今後もっと融通性のあるレイアウトが必要となり、Excel内のテキストボックスに変えていこうと思うのですが そもそもテキストボックスにすると逆に不便になるような気がするのですが、どうしてもテキストボックスに文字列を移動したいなら、以下のようなマクロを利用することになります。 シート名部分を右クリックして、「コードの表示」で表示される画面で、以下のコードをコピー貼り付けして、移動したいセルをダブルクリックすると、そのセルの右に文字列が移動したテキストボックスが作成されます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveSheet.Shapes.AddTextbox( _ Orientation:=msoTextOrientationHorizontal, _ Left:=Target.Offset(, 1).Left, Top:=Target.Offset(, 1).Top, _ Width:=Target.Offset(, 1).Width, Height:=Target.Offset(, 1).Height).Select With Selection .Characters.Text = Target .AutoSize = True End With Target.ClearContents End Sub
お礼
すばらしいです。これこそやりたかったことです。 一からは自分で作れませんが、ちょっと改造して利用できそうです。 大変ありがとうございました。 ところで、テキストボックスにするメリットは、 テキストボックス同士をコネクタで結びたいという理由が一番大きいです。 セルでもできるならば、別にセルのままでもよいかもしれないのですが、テキストボックスの拡大、縮小、などの更新が頻繁にあるので、やはりセルでは厳しいように思っています。
- imogasi
- ベストアンサー率27% (4737/17069)
マクロの記録をやってみれば良いじゃない。せずに質問する「のはおかしい。 テキストボックスを選択して、数式バー部で =A2 など入れる操作をする。 Sub Macro4() ActiveSheet.Shapes("TextBox1").Select Selection.Formula = "A2" ActiveSheet.Shapes("TextBox2").Select Selection.Formula = "A3" End Sub -- (1)上記は2つのテキストボックスと2つのセルの場合だが、テキストボックスは、手動で増やしている。この点、数が多いと大変だが、プログラムでやる手もあるが初心者向けではない。 テキストボックスは何個ぐらい予想されるのか? (2)上記マクロの記録ははForNextやFoe Eachで簡単に繰り返し作業に変えられる。 (3)>今後もっと融通性のあるレイアウトが必要となり、Excel内のテキストボックスに変えていこうと思うのですが テキストボックスのテキストにすると融通性がある、という根拠はさっぱり判らない。 「テキストファイル」の間違いならある面で納得する。 テキストファイルとテキストボックスは別物ですよ。 (4)>一から組む気はなく、 VBAで組むとコードが長くなるとかの目算があるのか。現状はVBAの勉強をしておらず、組めないだけでは。 (5)テキストボックスも、エクセルでは(1)フォーム上に(2)ワークシート上に、設置する方法がある。どちらかも明示してないのは、余りこのような券で経験して無い証拠。 ーーー 以上読んで、お礼欄にでも、後続の読者のために追加補足しておいたら。
お礼
早々にありがとうございました。 マクロの記録はやってみましたが、先の方に説明したとおり、数式バーに入れることは試していませんでした。 (1)300個くらいです。 手作業でも30個まとめてコピーすればそれほど苦ではありません。 (2)はい。 (3)質問に書いたとおり、Excelである必然性のない資料です。データ処理は行わず 「絵」として印刷物を配布することを目的とします。 (4)はい。勉強する暇は趣味的には欲しいですが、今回は一からコードを書くならば、手作業の方が早いと判断しています。 (5)データ処理を行うものでもなく、印刷物として使うので、フォームは使いません。
- MackyNo1
- ベストアンサー率53% (1521/2850)
セル内のデータをテキストボックスに表示したいなら、テキストボックスを選択し、数式バーに「=」と入力し、コピーしたいセルを選択してEnterするのが最も簡単な操作です。 より効率的な作業をしたいなら、1つのテキストボックスを作成し、Ctrlキーを押しながらドラッグして必要な数だけテキストボックスを作成しておいて、それらのテキストボックスに対して上記の操作を行って下さい。
お礼
さっそくの回答をありがとうございます。 数式バーで「=」を使うと、リンクとなりますよね。 できれば、元のセルデータを消した状態で、後任者に渡したいのです。 おっしゃる方法の後、内容だけコピーなどできるとよいのですが、 それもうまくできず... PowerPointにもっていくとできるの(但しフォントの設定やいろいろ設定し直すのが 大変そうなので、まずExcelのままがよいと思っています)で 何らかの方法があると思うのです。 どうしたらよいでしょう?
お礼
ここまでかゆいところに手が届くコードをありがとうございます。 もしかしたら、一日覚悟していた操作が、一瞬でできてしまいそう。 今日はこの作業に手をつけず、質問の投稿だけにしてよかったです。 今から、一瞬にして、作業を終えることにします。 ありがとうございました。