• ベストアンサー

エクセル マクロを使ってセルの中身をテキストボックスに移動

いつもお世話になります。 エクセルのシート内の様々なところに(ランダム) 文字があります。 これをテキストボックスに1つずつ「変更」できますでしょうか?セル内の内容は消えて構いません。 1セル内の内容を1つのテキストボックスに移動し 場所は同じ位置に。 これをマクロを組んで行いたいと思います。 難しいお願いですが宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

みなテキストボックスに置換えたら Excel である必要も無いような気が、、、、 重くなるし。 こんな感じでしょうか? 選択した範囲を置換えますが、元のセルは残します。 文字の飾りについては処理してません。 試すなら必ずテスト環境で。 Sub Test() Dim r As Range, sh As Shape For Each r In Selection  If Not IsEmpty(r.Value) Then    Set sh = ActiveSheet.Shapes.AddTextbox _    (msoTextOrientationHorizontal, r.Left, _    r.Top, r.Width, r.Height)    sh.TextFrame.Characters.Text = r.Text    sh.Line.Visible = msoFalse  End If Next r End Sub

tenta2005
質問者

お礼

ありがとうございました。 とてもうまく行きました。 これからも勉強していきたいと思います。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

すでに出ている回答で多分良いのでしょうが >エクセルのシート内の様々なところに(ランダム ランダムな複数の「セル」!に文字列が入っているのですね。 >テキストボックスに1つずつ「変更」できますでしょうか テキストボックスは、シート上に今までなくて、VBAで発生させて、新たに、セルの個数だけつくるということですか。 (すでに出ている回答はこれ) 位置はセルの左上に合わせるとして、サイズはセルの大きさに合わせるのですか。 シート上のすべての文字列についてそれをおこなうのでしょうか。 セル範囲の限定はありますか。たとえば見出しがあったとして、それまでやってしまうのでしょうか。 ・どういう場面で、こういうニーズが起こっているのですか。 参考までに教えてください。 何か漠然と、別方法で解決できそうな予感がする。 ・これを実行するきっかけは、ないのですか。 一斉にシート全体をサーと作業して終わり、でよいのですか。 (すでに出ている回答はこれ) イベントとの関連がないかと思って。

すると、全ての回答が全文表示されます。
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.1

質問の内容を取り違えているかもしれませんが、 やりたいことは以下のような事でしょうか? Sub Test() Dim rng As Range Dim Shp As Shape With ActiveSheet For Each rng In .UsedRange If Not IsEmpty(rng) Then Set Shp = .Shapes.AddTextbox _ (msoTextOrientationHorizontal, rng.Left, rng.Top, rng.Width, rng.Height) Shp.DrawingObject.Text = rng.Text rng.Clear End If Next End With End Sub

tenta2005
質問者

お礼

ありがとうございました。 とてもうまく行きました。 これからも勉強していきたいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A