• ベストアンサー

エクセルのテキストボックスをVBで操作できない

haporunの回答

  • haporun
  • ベストアンサー率40% (230/562)
回答No.1

>二回目はなぜか~ どこでエラーになっているか特定できますか? マクロ関数の中のいちばん上でF9を押して、ブレークポイントを設定し、どの行でエラーになっているか特定してください。 その関数とエラー行を補足してくださると、原因が分かるかもしれません。 >また、rangeオブジェクト~ これらにはちゃんと型というものがあるので、同じ型の変数しかSetできません。 何をセットしようとしたんですか?

takaoPR
質問者

補足

ご返答ありがとうございます。 エラーがでている行は、マクロの二行目の、 Selection.Characters.Text = "aaaaaa" の部分です。 書き忘れましたが、マクロ一行目 g_sheetwk.Shapes("text1").Select のあとに、 call msgbox(typename(selection)) で型を見てみたところ、「range」と表示されたので rangeならばSET可能かと思いました。 selectionを使用すると、以前にも同じような現象でエラーが出て困った事があり、その時は一旦rangeにセットしそこから処理を行い、最後にrangeを開放すれば回避ができました。 今回も同じような方法で回避できないかと思ったのですが、どの型にSETしたらいいのかがわかりません。 一回selectで指定したものを開放できる方法とかがあるのでしょうか? ヘルプを見回してもよく分かりませんでした・・・。

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

  • テキストボックスの番号のことで

    エクセルでテキストボックスを使用するマクロのスクリプトを調べてみると、ActiveSheet.Shapes("Text Box 1").Select等の文からテキストボックスの番号が分かりますが、マクロを調べることなくシート上からテキストボックスの番号を知ることはできるのでしょうか?

  • テキストボックスのことで

    エクセルの図形描画バーの中にあるテキストボックスで文字を作成すると、そのテキストボックスに自動的に番号が割り振られると思います。 マクロ文の中の ActiveSheet.Shapes("Text Box 8").Select のように。 この番号を変更することは可能でしょうか? テキストボックス自体を削除して新しいのにするというのではダメです。 それは不可能という回答でもけっこうです。 御存知の方がいましたら教えて下さい。

  • Excelでグループ化したオートシェイプにテキストを編集するコード

    Excelの四角のオートシェイプで、例えば、「四角1」「四角2」「四角3」という名前のオートシェイプが3つあったとしてテキスト編集で同じ文字列を入れたいとき、 For a = 1 To 3 ActiveSheet.Shapes("四角" & a).Select Selection.Characters.Text = "文字列" Next a とすればできるのですが、「四角1~3」をグループ化し、名前を「四角」としたとき、 ActiveSheet.Shapes("四角").Select Selection.Characters.Text = "文字列" とするとエラーが出てしまいます。グループ化されたオートシェイプのテキスト編集は、一度グループを解除し、それぞれテキスト編集しなければならないのでしょうか? 回答よろしくお願いします。

  • テキストボックスの表示

    VBAを使って、テキストボックスに表示される内容を設定しているのですが、 下記のように記述とOKですが、 Shapes.Range(Array("Text Box 1")).Select Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "test" Selectを抜かして、 Shapes.Range(Array("Text Box 1")).ShapeRange(1).TextFrame2.TextRange.Characters.Text = "test" のように記述するとエラーになります。 原因がよくわからないのですが、なぜなのでしょうか?

  • エクセルVBAでテキストボックスに文字

    Excel2016です。 ワークシート上に配置した、図形の「テキストボックス」に文字を入れるVBAについての質問です。 下記のTEST01では期待通り文字が入りますが、これはテキストボックスをSelectしなければなりません。 TEST02ならSelectせずにOKかと思ったら実行時エラーとなりました。 どのように修正したらよろしいのでしょうか? Sub TEST01()   Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3")).Select   Selection.ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"   Selection.ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"   Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue End Sub Sub TEST02()   With Sheets(“Sheet1”).Shapes.Range(Array("TextBox 3"))     .ShapeRange.TextFrame2.TextRange.Characters.Text = "TEST/TEST/2020"     .ShapeRange.TextFrame2.TextRange.Font.Name = "Meiryo UI"     .ShapeRange.TextFrame2.TextRange.Font.Bold = msoTrue   End With End Sub

  • テキストボックスの文字を一括して削除するには

    エクセルで沢山のテキストボックスの文字を一括して削除するマクロとして以下を実行するとエラーになってしまいます。 (テキストボックス自体は残す) Sub sakujo() ActiveSheet.TextBoxes.Select Selection.Characters.Text = "" End Sub どこがおかしいのでしょう?

  • 全てのテキストボックスを選択するには

    エクセルのあるシートに、オートシェイプの図形とテキストボックスの文字が無数に描画してあります。このような状態で、テキストボックスのみを全てセレクト状態にするマクロが知りたいのですが。

  • Excel VBA テキストボックスの値の取得

    テキストボックスの値が必要となり参照しようと思い、検索したところdebug.printにある3つの方法がヒットし、試して見ましたが、エラーになります。 テキストボックスの名前にはどれもtxtの文字を含んでいます。 Sub ShapeValue() Dim Shp As Shape For Each Shp In ActiveSheet.Shapes If InStr(Shp.Name, "txt") <> 0 Then Debug.Print Shp.TextFrame.Characters.Text 'オブジェクトは、このプロパティまたはメソッドをサポートしていません。 Debug.Print Shp.TextFrame2.TextRange.Text '指定された値は境界を超えています。 Debug.Print Shp.ShapeRange.TextFrame.Characters.Text 'オブジェクトは、このプロパティまたはメソッドをサポートしていません End If Next Shp End Sub どうすれば取得できるでしょうか?

  • VBAでテキストボックスを編集したいのですが

    エクセル2003のVBAで、グラフシート上にあるテキストボックスに\"test\"という文字を入れていこうとしています。既存のテキストボックスの文字を変更したいのです。 あれこれコードを試しているのですがエラーばかりでうまくいきません。 以下、エラーが出るコードです。 どう直せばよろしいでしょうか。 Workbooks(\"matome.xls\").Charts(\"Graph_THC_L\").Shapes(\"Text Box 1\").Characters.Text = \"test\" Workbooks(\"matome.xls\").Charts(\"Graph_THC_L\").TextFrame.Characters.Text = \"test\"