• ベストアンサー

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

  • マクロを使ってexcel2007でテキストボックス内をセンタリングしたい

    以前、excel2000でマクロの児童記録で記録し、それを利用して 下のようなマクロを使っていました (列ボックス1は変数) ActiveSheet.Shapes.AddTextbox(msoTextOrientationVerticalFarEast, 列ボックス1, 205 , 15, 105).Select Selection.Characters.Text = 顧客名 With Selection.Characters.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .Orientation = xlVertical .AutoSize = False .AddIndent = False End With Selection.ShapeRange.Fill.Visible = False Selection.ShapeRange.Fill.Solid Selection.ShapeRange.Fill.Transparency = 1# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse Selection.ShapeRange.TextFrame.MarginLeft = 0 Selection.ShapeRange.TextFrame.MarginRight = 0 Selection.ShapeRange.TextFrame.MarginTop = 0 Selection.ShapeRange.TextFrame.MarginBottom = 0 これで問題なく動作していたのですが excel2007で動作させると テキストボックス内が水平方向にセンタリングされていません。 excel2007でテキストボックスをかく記録をしてもマクロには何も残らず 困っています。 excel2007でも、センタリングさせる方法を教えて下さい どうかよろしくお願いします

  • Excel 任意のセルを指定する方法

    Excel 任意のセルを指定する方法 こんにちは Excel2003でセルの上を「---」で覆うマクロを作成しました。(以下参照) でもこれはセル「K2」に作成されます。 任意の作成したいセルを「---」で覆うようにするのには どのように改造すればよいでしょうか? おわかりの方お教えください。 ' 透明なセルを一つ作るマクロ ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 672.75, 13.5, _ 81#, 13.5).Select Selection.Characters.Text = "---" With Selection.Characters(Start:=1, Length:=3).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.HorizontalAlignment = xlCenter Selection.ShapeRange.Fill.Visible = msoFalse 'Selection.ShapeRange.Fill.Solid 'Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Visible = msoFalse Range("K2").Select End Sub

  • エクセル。マクロの記録で出来たVBAを書き直したい。

    エクセル2000(OSはWindows2000)でマクロの記録を行いました。 四角形を出してA1セルにリンクさせフォント等の設定をしたものです。 Sub Macro5() ActiveSheet.Shapes.AddShape(msoShapeRectangle, 200#, 100#, 140#, 80#). _ Select ExecuteExcel4Macro "FORMULA(""=R1C1"")" With Selection.Font .Name = "Century Gothic" .FontStyle = "太字" .Size = 72 .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# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse End Sub これを、実際には四角形をセレクトしないで実行させたいのです。 With ActiveSheet.Shapes.AddShape~ End With といった形になるのでしょうが、どうもうまく出来ません。 ご教示いただければ幸いです。

  • VBAで作成したテキストボックスを

    VBAで作成したテキストボックスを ?背景色を透明に設定 ?線を無し(透明)に設定 したいと考えています。 他サイトにTextBox1.BackStyle = fmBackStyleTransparentの様な表記はあったのですが、 TextBox1の様な図形の名前を使わずに、Selection.みたいに使用したいと考えています。 当方、テキストボックスの選択も今一理解していません。 ご教授よろしくお願いいたします。 With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .Orientation = xlHorizontal .AutoSize = False .AddIndent = False End With

  • Excel マクロ 任意のセルから実行したい

    こんにちは、Excel2003を使用しています。 ExcelでK55からE55までのセルの値を削除して(空白にして) それぞれに「---を引いた透明のダイアローグボックス」を コピーしていくマクロを作成したことがあります。 このときは開始するセルがK55と決まっていたのですが 今度は任意のセルから(たとえば選択したセルの右隣とか) 実行したいのですがどのようにマクロを作ればよいでしょうか ご存じの方お教えください。 なお参考に上記のマクロを記載します。 Range("E55:J55").Select Selection.ClearContents Range("H55").Select ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 672#, 729#, _ 81#, 13.5).Select Selection.Characters.Text = "" With Selection.Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Visible = msoFalse 'Selection.ShapeRange.Fill.Solid 'Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle = msoLineSolid Selection.ShapeRange.Line.Style = msoLineSingle Selection.ShapeRange.Line.Transparency = 0# Selection.ShapeRange.Line.Visible = msoFalse ActiveSheet.Shapes("Text Box 12").Select Selection.Characters.Text = "---" With Selection.Characters(Start:=1, Length:=3).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.HorizontalAlignment = xlCenter Range("K55").Select ActiveSheet.Shapes("Text Box 12").Select Selection.Copy Range("I55").Select ActiveSheet.Paste Range("H55").Select ActiveSheet.Paste Range("G55").Select ActiveSheet.Paste Range("F55").Select ActiveSheet.Paste Range("E55").Select ActiveSheet.Paste Range("E56").Select Selection.Copy Range("F56:J56").Select ActiveSheet.Paste Application.CutCopyMode = False Range("E56:J56").Select Selection.Copy Range("E57:E59").Select ActiveSheet.Paste Application.CutCopyMode = False Range("K59").Select End Sub

  • EXCEL VBAで自在に図形を変化させたい。

    今回の質問は図形に寸法値を入れるために基礎学習として簡単なマクロを作った件についてです。 シート上のコマンドボタンでフォームを呼び出し、文字の位置(100とか)を入力し、数字等文字を打ち込むと 打ち込んだ文字がその位置に表示されるというものです。 Private Sub Cmd文字表示_Click() Dim x As Single, y As Single, Sh As Shape On Error Resume Next x = CSng(Text位置A.Value) y = CSng(TextBox1.Value) With ActiveSheet For Each Sh In .Shapes If Sh.Name <> "Cmd文字入力" Then Sh.Delete End If Next Sh .Shapes.AddTextbox(msoTextOrientationHorizontal, x, x, _ x, x).Select End With With Selection.ShapeRange .Fill.Visible = msoFalse .Fill.Transparency = 0# .Line.Weight = 0.75 .Line.DashStyle = msoLineSolid .Line.Style = msoLineSingle .Line.Transparency = 0# .Line.Visible = msoFalse End With Selection.Characters.Text = "y" With Selection.Characters(Start:=1, Length:=3).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub 文字位置を自由に変えることは出来ますが打ち込んだ文字に変化させることが出来ません。 簡略的なコードや文字を表示させるには別の方法があるという方がいましたらご教示お願いします。

  • マクロを使ってコメントを大量に挿入したい。Excel2002

    都市名が北から並んでいる表があり、各都市名にカーソルを合わせると各都市に応じたコメントが表示されるようにしたいです。表示させたいコメントの種類が5種類あり、塗りつぶし効果でコメントの背景に画像を表示させたりと、1つのコメントを作るのにちょっと手間がかかります。 少しでも手早くと思い、マクロの記録で手順を5パターン登録して、マクロの実行でコメントを表示させたいと考えております。でサンプルをひとつ作成し実行したのですがエラーになってしまいます。 (1)End with以降のselection.shaperange.fill~以降が駄目みたいで「オブジェクトはこのプロパティーまたはメソッドをサポートしていません」とエラーメッセージが表示されます。何がいけないのでしょうか? (2)G62のセルにコメントを挿入したいときのサンプルなんですが、G62だけじゃなくてどこのセルにでも対応できるようにしたいんですがどう書き直せば良いのでしょうか? 800字以内との規制があるみたいで関係ないと思われるエラー以降の部分を削除させて頂きました。何卒宜しくお願いいたします。 Sub Macro1() ' Macro1 Macro ' Range("G62").AddComment Range("G62").Comment.Visible = False Range("G62").Comment.Text Text:="" With Selection.Font .Name = "MS Pゴシック" .FontStyle = "太字" .Size = 9 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Selection.ShapeRange.Fill.Transparency = 0# Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.DashStyle =     中略  End Sub

  • テキストボックスにVBA

    excelのシートにスキャナで取り込んだ画像を貼り付け、その画像の上にさらに、いくつかのテキストボックスを貼り付けて文字を入力して使っております。 そこで、その中の一つのテキストボックスを、クリックするたびに(MS明朝でサイズ14の)○を表示したり消したり出来る様にしたいのです。 VBAを使うのかと思い、マクロの自動記録で挑戦してみましたが Sub テキスト1_Click() ActiveSheet.Shapes("Text Box 1").Select Selection.Characters.Text = "○" With Selection.Characters(Start:=1, Length:=1).Font .Name = "MS 明朝" .FontStyle = "標準" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub となって、クリックで○は付けられますが、当然、更にクリックして消すという動きにはなりません。 ネットで拾ってきた、 If .Value = "○" Then   .Value = ""  Else   .Value = "○"  End If や、 Select Case Target.Value Case "": Target.Value = "○" Case "○": Target.Value = "" End Select なんてのを書き込んでみたりしたのですが、全く動きません。 もっとも今まで全くVBAをやった事がなかったので、よく意味もルールも分からないままの作業でしたので当然の結果でした。 VBAに興味が出てきましたので、更に勉強はしてみたいと思っておりますが、今現在の私には無理と判断いたしました。 どなたか、よろしくお願いいたします。

  • マクロの実行ボタンを削除するマクロ

    以下のようなコードを書いたのですが シート内にボタンができてそのボタンを最終的には削除したいです 資料作成のテンプレートとして下記コードを書いたのですが 資料ができた時にボタンがあるままだと見栄えがいまいちなのでマクロ実行ボタンを削除したくなりました。 シート数は30枚くらいあるので1シートずつマクロ実行ボタンを削除するのは正直しんどいです 一度にシートを全部選択してマクロ実行ボタンを削除したいです マクロ実行ボタンの箇所は全シート同じ箇所にあります Sub ボタン() Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone ActiveSheet.Buttons.Add(108, 40, 55, 15).Select Selection.OnAction = "図形挿入等倍" Selection.Characters.Text = "図形挿入" With Selection.Characters(Start:=1, Length:=4).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Range("E4").Select ActiveSheet.Buttons.Add(215, 40, 55, 15).Select Selection.OnAction = "赤枠" Selection.Characters.Text = "赤枠" With Selection.Characters(Start:=1, Length:=2).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Range("G4").Select ActiveSheet.Buttons.Add(323, 40, 55, 15).Select Selection.OnAction = "テキスト入り赤四角" Selection.Characters.Text = "テキスト" With Selection.Characters(Start:=1, Length:=4).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Rows("12:12").Select ActiveWindow.FreezePanes = True End Sub

  • テキストボックスのフォンを変更するマクロ

    エクセルで沢山のテキストボックスのフォントを一括してMSPゴシックに変更するマクロとして以下を実行すると、処理自体は行われているようなのですが結果は元のフォンのままです。 Sub fonto() Dim con As Integer For con = 1 To ActiveSheet.TextBoxes.Count ActiveSheet.TextBoxes(con).Characters.Text = "" With Selection.Characters(Start:=1, Length:=1).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 14 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Next con End Sub どこがおかしいのでしょうか?  また、これだと文字を削除してしまうので、削除しない方法も知りたいのですが。

このQ&Aのポイント
  • CD.DVDの印字したい機械の動かし方について相談したいです。
  • お使いの環境はWindows11で、USBケーブルで接続されています。
  • ひかり回線を使用しています。関連するソフト・アプリについては記載がありません。
回答を見る

専門家に質問してみよう