重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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 の設定の違いがあるのでしょうか? マクロ登録で確認も出来ず、ネットの調べてもわかりませんでした。お力をおかしください。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/01/12 10:20

Excel2007の環境がありませんので確認は出来ていませんが


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

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

お礼日時:2010/01/12 10:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!