|
ぁあ、すみません。
普通のオートシェイプのテキストボックスです。
古い書き方で混乱させてしまいました。すみません。
Sub test()
Dim s As Shape
Dim t As TextBox
Set s = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 10, 20, 30, 40)
s.TextFrame.Characters.Text = "a" & vbLf & "b" & vbLf & "c"
Set t = ActiveSheet.TextBoxes.Add(100, 20, 30, 40)
t.Text = "a" & vbLf & "b" & vbLf & "c"
Set s = Nothing
Set t = Nothing
End Sub
DrawingObjects や TextBoxes , Pictures...などは[隠しオブジェクト]で、
バージョン95以前との互換性を保持するために残っているそうです。
Excel2000までのヘルプファイル VBAXL9.CHM には[隠しオブジェクト]についての記述がありますが、
2002以降の VBAXL10.CHM には記述がないようです。
たまに便利な時があるので私は好きで結構使ってしまってます。
例えば TextBoxes 一括削除の場合
ActiveSheet.TextBoxes.Delete
これはTextBoxがなくてもエラーにはなりません。
また、TextBoxの検索などで、HitしたTextBoxに画面遷移したい時など
ActiveSheet.Shapes(1).Select
では選択されるだけで画面遷移しませんが、
ActiveSheet.TextBoxes(1).Select
や
ActiveSheet.Shapes(1).DrawingObject.Select
などは画面遷移を伴います。
Shapeオブジェクトを扱う時、色々と振る舞いが違う場合があるので、
知っておくとコーディングの幅が広がるかもしれません。
|
|