• ベストアンサー

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

エクセルで沢山のテキストボックスのフォントを一括して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 どこがおかしいのでしょうか?  また、これだと文字を削除してしまうので、削除しない方法も知りたいのですが。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

「元のフォントのまま」というのは、下のコードで < Selection > が、原因です。 For ~ Next で、テキストボックスの「インデックス番号」は、切り替えて いても「セレクト」は、していませんよね。 With Selection.Characters(Start:=1, Length:=1).Font それに、フォントを変えるのは、先頭の1文字だけですか? もし、全体のフォント種でしたら、 With TextBoxes(con).Characters.Font とするべきなのです。 あと、「文字を削除してしまう」のは、次の行があるからです。 ActiveSheet.TextBoxes(con).Characters.Text = "" ここの TextBoxes(con) が 次の行の Selection の替わりにあったら・・・ おしかったぁ~

peko__
質問者

お礼

ありがとうございました。 >With TextBoxes(con).Characters.Font >とするべきなのです。 正確には、With ActiveSheet.TextBoxes(con).Characters.Font でした。 でも助かりました。

その他の回答 (2)

  • nml
  • ベストアンサー率20% (4/20)
回答No.2

#1の訂正です。貼り付ける場所を間違えてしまいました。 フォントだけを変えるのであれば、 Sub fonto() Dim MyTextBox For Each MyTextBox In ActiveSheet.TextBoxes With MyTextBox .Font.Name = "MS Pゴシック" End With Next End Sub 文字を削除してしまったのは、 ActiveSheet.TextBoxes(con).Characters.Text = "" の部分だと思います。

peko__
質問者

お礼

ありがとうございました。

  • nml
  • ベストアンサー率20% (4/20)
回答No.1

フォントだけの変更であれば、 Sub fonto() Dim MyTextBox For Each MyTextBox In ActiveSheet.TextBoxes With MyTextBox .Font.Name = "MS Pゴシック" End With Next ActiveSheet.TextBoxes(con).Characters.Text = "" の部分だと思います。 End Sub 文字を削除しているのは、

peko__
質問者

お礼

ありがとうございました。

関連するQ&A

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

    以下のようなコードを書いたのですが シート内にボタンができてそのボタンを最終的には削除したいです 資料作成のテンプレートとして下記コードを書いたのですが 資料ができた時にボタンがあるままだと見栄えがいまいちなのでマクロ実行ボタンを削除したくなりました。 シート数は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

  • 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

  • テキストボックスに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に興味が出てきましたので、更に勉強はしてみたいと思っておりますが、今現在の私には無理と判断いたしました。 どなたか、よろしくお願いいたします。

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

  • 任意のセルでマクロを実行させたい

    アクティブセルにマクロを実行させたいのですがうまくいきません。 2007のエクセルを使用しています。 (1)命令文で指定しているセル(G9:G11)をJ9:J11やR14:R16等でも使用したい。 (2)また作成したマクロを同シート内オートシェイプに登録したい。 よろしくお願いいたします。 Sub Macro2() ' ' Macro2 Macro ' ' Range("G9:G11").Select Selection.ClearContents With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlTop .Orientation = xlVertical .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection.Font .Name = "MS P明朝" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 16777164 .TintAndShade = 0 .PatternTintAndShade = 0 End With ActiveCell.FormulaR1C1 = "搬入" With ActiveCell.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 = xlAutomatic .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With ActiveCell.Characters(1, 2).PhoneticCharacters = "ハンニュウ" Range("G12").Select End Sub

  • Excelマクロ教えてください。

    いつも大変お世話になっております。 あるシートにあるフォントのすべてをMSゴシックにしたいのですが、 マクロ記録→全選択してフォント変更→記録解除 で下記のマクロができました。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/11/21 ユーザー名 : TEST ' ' Cells.Select With Selection.font .Name = "MS ゴシック" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub 全選択せずに、あるシートすべてのフォントを変更する方法はありますか? シートのフォントを変更するだけの目的です。 よろしくお願いします。

  • マクロ ボタンに名前をつける

    ☆シート1にボタンが29個あり、 ボタンを押すとシート2やシート3のページをアクティブにして表示するマクロを作っています。 その過程で、シート1にボタンを29個作成するところまでは終わりました。 そして、次にボタン1つ1つに名前を付けたいと思うのですが、 シート2、3、4...のI2のテキストを引用してボタンの名前を付けたいです。 (各シートのタイトルはI2に記入しているため。) シート2のI2のテキストを引用してボタンに名前を付けるマクロを作ってみましたが、 ”広告事業収入”がシート2だとは限らないので、”広告事業収入”を引用せず、 ”シート2のI2”を引用してボタンの名前にするマクロにしていただきたいです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub シート2のボタン作成() ' Sheets(2).Select Range("I2").Select ActiveCell.FormulaR1C1 = "広告事業収入" Sheets(1).Select ActiveSheet.Shapes.Range(Array("Button 1")).Select Selection.Characters.Text = "広告事業収入" With Selection.Characters(Start:=1, Length:=9).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 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ いらない部分も削除していただけたら幸いです。

  • マクロを使って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でも、センタリングさせる方法を教えて下さい どうかよろしくお願いします

  • エクセル 文字色をグレーにしたい

    セルの書式設定→フォント→色で左下のグレーを選択するマクロの記録を取ったのですが そのマクロを実行すると、文字色が白になってしまいます。 コードはこちらです。 Sub Macro() With Columns("a").Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 8 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorDark1 .TintAndShade = -0.499984741 .ThemeFont = xlThemeFontNone End With End Sub マクロの記録の時はグレーになるのに 実際使うと白になるのはなぜでしょうか?

  • 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

専門家に質問してみよう