オートシェイプの文字入力待機状態にする方法

このQ&Aのポイント
  • オートシェイプが挿入されてすぐに文字入力できる状態にする方法を教えてください。
  • フォントのサイズと位置は問わずに、黒色で文字入力できる状態にしたいです。
  • オートシェイプがアクティブ状態になり、挿入後すぐに文字をタイプできるようにしたいです。
回答を見る
  • ベストアンサー

挿入したオートシェイプが文字入力待機状態にする方法

昨日HohoPapaさんに選択したセルとピッタリ合うオートシェイプの挿入の仕方を教えていただきました。 今度は、オートシェイプがアクティブ状態とでもいうのでしょうか、挿入後すぐにタイプしたら文字が入力できる状態にする方法を教えていただきたいです。フォントのサイズ、位置は不問で黒色で入力できればと思います。 よろしくお願いいたします。 Set shrect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _ Selection.Left, Selection.Top, Selection.Width, _ Selection.Height) shrect.Fill.ForeColor.SchemeColor = 22 'Grey 'shrect.Font.Color = vbBlack ←うまくいかなかった部分

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#1です。 お礼に関して。 Sheet1に3つシェイプを張り付けました。 ーー 下記を作って、実行。 Sub test03() For Each sp In Worksheets("Sheet1").Shapes MsgBox sp.Name Next End Sub Heart 1 , Torabezoid 2, Oval 3とでました。 目的の図形の名前をメモします。 ^-- 3番目のものと仮定すると、Shapes("Oval 3")の()内を変えて、下記を作り、実行します Sub test04() Worksheets("Sheet1").Shapes("Oval 3").TextFrame2.TextRange.Select End Sub これでどうですか。 === 同一シート上であっても、複数のShapesでは、TabOrder 的なものは設定できるのかどうか、 小生には判りません。多分その考えはない。 もうそろそろ、この域になると、WEBを調べても、情報(記事)がないと思うが、やりすぎでは? UserFormのコントロール相互にはある。 参考 https://vba-beginner.com/vba1-8-3774/

ticktak
質問者

お礼

回答ありがとうございます。 ただ、ちょっと使い方がわかりませんでした。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

何か適当な時期・タイミングに、例えばWorkbook_Openのイベントに、(またはシートのActivatイベントに) Sub test02() Worksheets("Sheet1").Shapes(1).TextFrame2.TextRange.Select End Sub のようなのを入れる(上記コードの真ん中の1行)のはどうか。 質問者のニーズに合うか、自信は無いが。

ticktak
質問者

お礼

どうもありがとうございました。 たしかにこの方法で直ぐ書き込める状態になりましたが、Shape1にしか適用されないのですね。 挿入した図形でアクティブにするにはどうしたらよいでしょうか。

関連するQ&A

  • 選択したセルにピッタリ合うオートシェイプの挿入

    よろしくお願いいたします。 下記のコードは行方向では選択したセルとピッタリに四角のオートシェイプが挿入できるのですが、列方向では常に1行です。 横方向も選んだ範囲だけ広がるようにするにはどう変えたらよいでしょうか。 Set shrect = ActiveSheet.Shapes.AddShape(msoShapeRectangle, _ Selection.Left, Selection.Top, Selection.Offset(0, 1).Left - Selection.Left, _ Selection.Height)

  • Excelのマクロを使用してオートシェイプ図形の色を変えたいのです。

    Excelのマクロを使用してオートシェイプ図形の色を変えたいのです。 オートシェイプ図形を50個ならべて、マウスでクリックしてものは色が変わるようにしたいと思います。 マクロ記録をすると以下のようになりました。 Sub Macro1() ActiveSheet.Shapes("AutoShape 1").Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 45 Selection.ShapeRange.Fill.Visible = msoTrue Selection.ShapeRange.Fill.Solid End Sub このプログラムを50個書くわけにはいかないのですが、プログラムで処理するのに問題点が2つ出てきました。 ・オートシェイプ図形の名前が"AutoShape 1"となっていますが、これを変更したいのですが、書式設定にはありませんでした。変更するにはどうすればよいのでしょう? ・クリックしたオートシェイプ図形がどれであるかを返す関数がないと、どの図形がクリックされたかわからないのですが、これを返す関数はあるのでしょうか? よろしくお願いします。

  • JavaScriptで書き出したオートシェイプにテキストを挿入したいの

    JavaScriptで書き出したオートシェイプにテキストを挿入したいのですができません。 先日、ExcelのシートにJavaScriptでオートシェイプを書き出す方法を質問した者です。 今度は書き出したオートシェイプにテキストを挿入したいのですが上手くいきません。 どうすれば良いのか教えてください。 ※またもやJavaScriptで解決したいです。 なお、現在悩み中のソースは以下のようです。 ※教えて頂いたソースほとんどそのままですが... function createShapes() { var excel = new ActiveXObject( "Excel.Application" ); excel.visible = true; var sheet = excel.Workbooks.Add().activeSheet; // オートシェイプ挿入:引数の105は吹き出しを示す sheet.Shapes.AddShape(105, 123, 37.5, 151.5, 94.5); // ココでメソッド、プロパティがないとエラーになってしまう...  sheet.Shapes("AutoShape 1").Characters.Text = "ほげほげ"; } よろしくお願いします。

  • VB6 オートシェイプ描画

    VB6 オートシェイプ描画 VB6でExcel,2000(ActiveSheet)にオートシェイプを使用したいのですが、エラーが出てしまいます。 コマンドボタンクリック時、エラー ------------------------------- 実行時エラー'1004': 指定された値は境界を超えています。 ------------------------------- AddLineは出来たのですが四角や円がこのエラーです。どこが間違えているのでしょうか? 宜しくお願いします。 Private Sub CB13_Click() Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") xlApp.ActiveSheet.Shapes.AddLine 50, 50, 100, 100 '(OK) xlApp.ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 100, 100).Select '(NG) Set xlApp = Nothing End Sub

  • エクセルVBAでオートシェープの連番はいくつまで使えますか?

    シート上にオートシェープを配置すると、自動で名前と番号が振られます。(直線 125 とか 図 126とか) この番号は連番になっており、配置したオートシェープを全て削除してファイルを保存しても、次回はオートシェープが何もないにもかかわらず、次の番号から採番されます。 この番号はいったい幾つまで続くのでしょうか? 下記VBAを試してますが、現在7万番台でもまだ有効に採番されます。 ある番号になったらそれ以上オートシェープが作れなくなるという話も聞きましたので質問します。 Sub test01() Randomize With ActiveSheet .Cells.Interior.ColorIndex = 1 CL = Int((50 * Rnd) + 1) L1 = Int((700 * Rnd) + 20) H1 = Int((450 * Rnd) + 20) Set SA = .Shapes.AddShape(msoShape5pointStar, L1, H1, 25, 25) SA.Name = "Merlion_" & SA.Name SA.Fill.ForeColor.SchemeColor = CL For n = 1 To 100 CL = Int((50 * Rnd) + 1) L2 = Int((600 * Rnd) + 20) H2 = Int((300 * Rnd) + 20) SA.Top = H2 - SA.Width / 2 SA.Left = L2 - SA.Height / 2 SA.Fill.ForeColor.SchemeColor = CL Set SL = .Shapes.AddLine(L1, H1, L2, H2) SL.Name = "Merlion_" & SL.Name Application.StatusBar = SL.Name SL.line.Weight = 0.75 SL.line.ForeColor.SchemeColor = CL L1 = L2 H1 = H2 Next SA.ZOrder msoBringToFront SA.line.Visible = True SA.line.ForeColor.SchemeColor = CL For i = 1 To 800 Step 60 SA.Rotation = i / 10 SA.line.Weight = i DoEvents Next For Each s In .Shapes If s.Name Like "Merlion_*" Then s.Delete Next .Cells.Interior.ColorIndex = xlNone End With End Sub

  • エクセルVBAでオートシェープを円く動かしたい。

    星型をシート上で回転しながらぐるっと円周のように動かそうと、ためしに下記のマクロを書きましたが、やはり方向転換がぎこちなく、スムーズな丸い動きにはなりません。 かと言って、上下左右以外に動かす方法はないでしょうし、何かいいやり方はないでしょうか? Sub Star() With ActiveSheet.Shapes.AddShape(msoShape5pointStar, 273#, 43#, 50#, 50#) .Fill.ForeColor.SchemeColor = 13 .Line.Weight = 0.75 .Line.ForeColor.SchemeColor = 64 For i = 1 To 180 a = 1 b = 1 If i > 90 Then a = -1 If i < 45 Or i > 135 Then b = -1 .IncrementRotation 2 .IncrementTop 2 * a .IncrementLeft -2 * b DoEvents Next End With End Sub

  • エクセルVBAのWith~End With構文

    Win2000エクセル2000です。 下記のMacro11はTEST11のようにWith~End Withでくくれると思うのですがエラーになります。 どこがおかしいのでしょうか? Sub Macro11() ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120).Select Selection.ShapeRange.Line.Weight = 0.75 Selection.ShapeRange.Line.ForeColor.SchemeColor = 64 Selection.ShapeRange.Fill.ForeColor.SchemeColor = 10 Selection.ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 Selection.ShapeRange.Adjustments.Item(1) = 0.3016 Selection.ShapeRange.ThreeD.SetThreeDFormat msoThreeD7 Selection.ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal Selection.ShapeRange.ThreeD.Depth = 144# End Sub Sub TEST11() With ActiveSheet.Shapes.AddShape(msoShapeSun, 450, 150, 120, 120) .ShapeRange.Line.Weight = 0.75 .ShapeRange.Line.ForeColor.SchemeColor = 64 .ShapeRange.Fill.ForeColor.SchemeColor = 10 .ShapeRange.Fill.OneColorGradient msoGradientFromCorner, 1, 0.59 .ShapeRange.Adjustments.Item(1) = 0.3016 .ShapeRange.ThreeD.SetThreeDFormat msoThreeD7 .ShapeRange.ThreeD.PresetMaterial = msoMaterialMetal .ShapeRange.ThreeD.Depth = 144# End With End Sub

  • エクセルVBAでの複数のオートシェイプの色塗り方法

    ネットから下記のコードを見つけたのですが、1つのシートに複数のオートシェイプの色塗りを変更する方法を教えてください。 例えばセル"A1"には数値の1と"A2"には数値2を入力したら、 オートシェイプAにはセル"A1"に対応した色塗り『赤色』を オートシェイプBにはセル"A2"に対応した色塗り『黄色』といった感じです。 下記のコードをいくつも繋げれば、複数のオートシェイプの色塗りが出来ると思ったのですが、コードを繋げる方法がわかりません。その他に何か良い方法がありましたら教えてください。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) <> "A1" Then Exit Sub With ActiveSheet.Shapes("ABC").Fill.ForeColor Select Case Target.Value Case Is = "赤" .SchemeColor = 2 Case Is = "黄" .SchemeColor = 5 Case Is = "緑" .SchemeColor = 3 Case Is = "青" .SchemeColor = 4 Case Else .SchemeColor = 1 End Select End With End Sub

  • 特定の名前のオートシェイプの有無を知りたい(エクセルVBA)

    Excel VBA で、オートシェイプを扱おうとしています。 たとえば、 ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 50, 50).Name = "TestShape1" のようにして、それぞれ名前を付けているのですが、プログラム中、特定のオートシェイプを削除したり、再び同じ名前で作ったり、ということを行っています。 前者の場合、すでに当該オートシェイプが削除されている場合、目的のオートシェイプが存在していないためか、エラーが発生します。また後者の場合も、オートシェイプを重ねて作成することになってしまうケースにエラーが発生します。 On Error Resume Next で回避することも考えられるでしょうが、もっと直接的に、ある名前のオートシェイプが存在する/しない、をチェックしたうえで各処理を行うようにしたいのです。 どのような方法があるでしょうか?

  • エクセルVBAの構文。 どこが間違っているのでしょうか?

    以下の2つは同じ意味だと思うのですが、test2はエラーになります。どうしてなのでしょうか? Sub test1() ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#).Select Selection.Formula = "$A$1" End Sub Sub test2() With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 300#, 100#, 140#, 80#) .Formula = "$A$1" End With End Sub

専門家に質問してみよう