御文章箱(仏具) |
エクセルでワークシートに設けたテキストボックスは、奥深いものがあります。
こさえるには、[挿入]タブから[テキストボックス]のメニューをクリック。
後は、ワークシートにマウスを自在にドラッグさせて、ボックス枠を設けます。
次に、書体の書式などは、タブから設定できるので、便利に使い始められます。
普通なら、この程度で使っても全く問題はありませんが、VBAで関連付けたい。
例えば、テキストボックス内に文字列を挿入したり、削除したりする操作です。
ActiveSheet.Shapes(”TextBox1”).TextFrame2.TextRange.Text = "あいう"
ActiveSheet.Shapes(”TextBox1”).TextFrame.Characters.Text = "あいう"
これらのコードは、どちらも文字列が挿入できたり、書式設定もできたりする。
ただ、"TextFrame"と"TextFrame2"で設定するコードの記述は、かなり違うな。
Sub TxtFrmt() ’TextFrameで書式を設定できるケース
With ActiveSheet.Shapes("TextBox 1").TextFrame
.Characters.Text = "あいう"
.Characters.Font.Name = "MS ゴシック"
.Characters.Font.Size = 12 'フォントサイズ
.Characters.Font.ColorIndex = 3 '赤色、黒色は1、青色は5
.Characters.Font.Underline = xlUnderlineStyleSingle '下線
.Characters.Font.Bold = True '下線
.HorizontalAlignment = xlHAlignCenter '水平位置中央揃え
End With
End Sub
Sub TxtFrmt() 'TextFrame2で書式を設定できるケース
With ActiveSheet.Shapes("TextBox 1").TextFrame2.TextRange
.Text = "あいう"
.Font.Name = "MS ゴシック"
.Font.Size = 18 'フォントサイズ
.ParagraphFormat.Alignment = msoAlignCenter '水平位置中央揃え
End With
End Sub
比較すれば、"TextFrame2"は、"TextFrame"より書式の設定に自由度が少ない。
自分で試してみただけですが、文字列で水平上下の位置設定も記述が異なるな。
機能的には、"TextFrame2"に拡張性を持たせたようですが、下位互換はない。
しかも、この拡張性の意味は、エクセルよりパワーポイントを想定したらしい。
なので、エクセルでテキストボックスを使うなら、"TextFrame"でいいだろう。
この他、テキストボックスの文字列を削除する設定で、挙動に違いがあります。
ActiveSheet.Shapes("TextBox 1").TextFrame.Characters.Delete
ActiveSheet.Shapes("TextBox 1").TextFrame2.DeleteText
確かに、両方とも文字列は削除されますが、前者は文字列だけが削除されます。
ところが困ったことに、後者は設定されたフォントの書式までが削除されます。
なので、設定した書式を残して文字列を削除するには、前者をお勧めしますな。
というわけで、たかがテキストボックス、されどテキストボックスなのでした。
ちなみに、ワークシート上のテキストボックスに、パワーポイントで使う設定値をいれて、 ”.ParagraphFormat.Alignment = ppAlignCenter”を実行させてみてもエラーが出るだけなので、エクセルを使うのであれば、”TextFrame”に関連するプロパティだけでシェイプを操作しても、十分だとも思ったのでした。
0 件のコメント:
コメントを投稿