• ベストアンサー

Excel2007 VBA テキストボックス設定

Excel2000で作成したVBAコード(テキストボックスの塗りつぶしなし)をExcel2007で実行すると黒く塗りつぶされます。 <実行コード> ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 場所X, 場   所Y, 幅, 高さ).Select Selection.Characters.Text = タイトル1(場所) With Selection.Font .Name = "MS ゴシック" .FontStyle = "標準" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse Selection.ShapeRange.Fill.Transparency = 0# ・・・ (1) 上記コード(1)の部分がおかしいのでしょうか?2000では上手く動きます。 2000 と 2007 の設定の違いがあるのでしょうか? マクロ登録で確認も出来ず、ネットの調べてもわかりませんでした。お力をおかしください。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

ステップ実行してもらったら解ると思いますが >Selection.ShapeRange.Fill.Visible = msoFalse この行で「塗りつぶしなし」の設定になります。 >Selection.ShapeRange.Fill.Transparency = 0# これが不要です。 手作業でも確認できますが、本来、「塗りつぶしなし」と「透明度」の設定は両立しませんね? 試しに2007で : Selection.ShapeRange.Fill.Visible = msoFalse Debug.Print Selection.ShapeRange.Fill.Visible Selection.ShapeRange.Fill.Transparency = 1# Debug.Print Selection.ShapeRange.Fill.Visible : とやってみてください。 Transparencyを設定する事により、Fill.Visible = msoFalseの設定が無効化されてます。 同じように2000で確認すると、msoFalseのままなので、Visible設定が優先のようです。(2003もです) この2007の動きのほうが、ある意味、正しいように思えます。 2000では、必要ないコードを書いていただけ、とも言えるかもしれませんね。 ちなみに、Selectしない書き方をする場合は以下のような感じで。 With ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 100, 100, 20)   With .TextFrame.Characters     With .Font       .Name = "MS ゴシック"       .FontStyle = "標準"       .Size = 10       .Strikethrough = False       .Superscript = False       .Subscript = False       .OutlineFont = False       .Shadow = False       .Underline = xlUnderlineStyleNone       .ColorIndex = xlAutomatic     End With     .Text = "test"   End With   .Fill.Visible = msoFalse End With

rei230
質問者

お礼

確認が遅れてすみません。 とてもわかりやすいご回答を頂きありがとうございます。 おかげさまで解決いたしました。 2007は慣れるまで時間がかかりそうです。 今後とも宜しくお願い致します。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

Excel2007の環境がありませんので確認は出来ていませんが ヘルプを見る限りでは Transparency プロパティ 指定された塗りつぶしの透明度を示す 0.0 (不透明) ~ 1.0 (透明) の値を設定します。 値の取得および設定が可能です。倍精度浮動小数点数型 (Double) の値を使用します。 と なっていますので Selection.ShapeRange.Fill.Transparency = 1#  で試されては如何でしょうか

rei230
質問者

お礼

ありがとうございます。 出来ました。 今後も宜しくお願い致します。

関連するQ&A