エクセルで「アクティブセルの文字をテキストボックスにして見せたい!」と思ったことはありませんか?
たとえば、
- コメント的に目立たせたいとき
- 図形と組み合わせて見栄えを良くしたいとき
- ポップアップ的な表示にしたいとき
など、意外と活用シーンは多いものです。
そこで今回は「ボタンを押すだけで、アクティブセルの内容を自動でテキストボックスに表示するマクロ(VBA)」をご紹介します。しかも、
- 枠線なし
- 水色で塗りつぶし
- 文字に応じて自動でサイズ調整
という見た目も整った便利仕様です!
ボタンを押すだけで、アクティブセルの内容を自動でテキストボックスに表示するマクロを作る方法
ボタンを押すだけで、アクティブセルの内容を自動でテキストボックスに表示するマクロを作る方法です。
A2セルの文字列をアクティブセルにし、テキストボックスに表示するのを例に紹介します。
マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法
1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック
3.コード入力画面が開く
4.コードを入力
コードを入力します。
アクティブセルの文字を、テキストボックスにして表示する、という内容です。
5.ボタンができた →ボタンを押す
ボタンができました。
早速ボタンを押しましょう!
6.テキストボックスが貼付けできた
アクティブセルの文字列で、テキストボックスに貼付けできました。
テキストボックスは移動できるので、好きな位置に移動しましょう。
まとめ:見た目もキレイなテキストボックスを自動生成しよう!
このマクロを使えば、Excelの表や図を視覚的にわかりやすく装飾したいときに、とても便利です。
ポイントをおさらい!
- アクティブセルの文字をそのままテキストボックスに表示
- 枠線なし、水色塗りつぶしで視認性UP
- サイズは自動調整で手間いらず
ちょっとしたプレゼン資料や報告書でも、ひと味違った印象を与えることができますよ!
最後に今回使ったコードです。
Dim ws As Worksheet
Dim txtBox As Shape
Dim cellText As String
Dim leftPos As Double, topPos As Double
' アクティブなワークシート
Set ws = ActiveSheet
' アクティブセルの文字列
cellText = ActiveCell.Value
' アクティブセルの位置
leftPos = ActiveCell.Left
topPos = ActiveCell.Top
' テキストボックスの追加(セルの左上に配置)
Set txtBox = ws.Shapes.AddTextbox( _
Orientation:=msoTextOrientationHorizontal, _
Left:=leftPos, Top:=topPos, Width:=100, Height:=20)
' テキストボックスの設定
With txtBox
.TextFrame.Characters.Text = cellText
.Line.Visible = msoFalse ' 枠線なし
.Fill.ForeColor.RGB = RGB(173, 216, 230) ' 水色(ライトブルー)
.TextFrame.AutoSize = True ' テキストサイズに自動調整
End With