• 締切済み

エクセルに挿入した図に連番を付けたいのですが

エクセルに絵として挿入した地図上で、クリックした位置に連番(1~100)のテキストボックスを挿入したいのですが、またフォントや大きさも変えることができればうれしいのですが、教えていただけるでしょうか。

みんなの回答

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.2

VBAをある程度扱えたとしても、 シート上の画像の任意個所をクリックすることで クリックした位置(縦方向、横方向のアドレス)は特定できるものの、 それは画像上の位置ではなくデスクトップ上の位置ですので、 エクセルのフォームのデスクトップ上の位置、 更に、エクセルが縦方向、横方向にスクロールしている場合を考慮する必要があります。 加えて、画像を右クリックしたときのイベントがありません。 つまり、VBAでは事実上困難です。 C#やDelphiなど、プロ専用の言語が必要です。 VBAでとのことであれば、 添付画像のように、予め必要な数の図形を後記VBAで用意し これを手作業で必要な個所に移動する。 という対応が落としどころと思います。 Option Explicit Sub ZuUp() '角が丸い四角形を100個配置  Dim Sh As Worksheet '作成先シート  Dim MyText As String  Dim Nm As String  '図形名  Dim Bx As Double  '開始横位置  Dim By As Double  '開始縦位置  Dim Hi As Double  '高さ  Dim Wi As Double  '幅  Dim Fs As Long   '文字サイズ  Dim Fn As String  'フォント名  Dim Cr As Long   '文字色  Dim BCr As Long   '背景色  Dim curve As Double  Dim i As Long  Dim j As Long    Set Sh = ThisWorkbook.Sheets("Sheet1")  By = 0  Hi = 16  Wi = 30  Fs = 9  Fn = "MS Pゴシック"  Cr = rgbRed  BCr = rgbAqua  curve = 0.2    For j = 1 To 10   For i = 1 To 10    MyText = Format(i * j, "000")    Nm = Format(i, "000") & Format(j, "000")    Bx = Wi * i    By = Hi * j    MakeEgg Sh, MyText, Nm, Bx, By, Hi, Wi, Fn, Fs, Cr, BCr, curve   Next i  Next j End Sub '// サブルーチン Sub MakeEgg(Sh As Worksheet, MyText As String, Nm As String, _     Bx As Double, By As Double, Hi As Double, Wi As Double, _     Fn As String, Fs As Long, Cr As Long, BCr As Long, curve As Double)  Dim shp As Shape    On Error Resume Next  Set shp = Sh.Shapes(Nm)  shp.Delete  On Error GoTo 0     Set shp = Sh.Shapes.AddShape(msoShapeRoundedRectangle, Bx, By, Wi, Hi)  shp.Name = Nm  shp.Line.Visible = True '外枠の有無  shp.TextFrame.Characters.Text = MyText  shp.TextFrame2.VerticalAnchor = msoAnchorMiddle  shp.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter  shp.Fill.ForeColor.RGB = BCr  shp.Adjustments.Item(1) = curve  With shp.TextFrame2.TextRange.Font   .NameComplexScript = Fn   .NameFarEast = Fn   .Name = Fn   .Size = Fs   .Bold = msoFalse   .Fill.ForeColor.RGB = Cr  End With End Sub

Jmasa0123
質問者

お礼

図まで添付いただき、わかりやすくご説明いただき大変感謝いたします。クリックした場所に連番を付けることが難しいこともわかりました。他方、作成頂いたプログラムをエクセル上で実行し同じようにできたことに感激しております。(貴殿にとっては当たり前のことでしょうけど) ありがとうございました。

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

・回答もまだ出ない。平凡な質問(FAQ)なら、普通はすぐ回答がつく。 ・Google照会で「エクセル 図表番号」などでもWEB記事が上位には見つからない。   ワードの記事ばかり。 ・今までのOKWAVEの質問回答の出現の記憶にない。 などからエクセルに、この機能を期待するのは無理ではないですか。  後続の回答を期待してください。 ーー 以下参考にしてください。 そこでエクセルVBA(ワードVBAではない)で、真似事のようなことを やってみた。VBAに関心があれば、やってみてください。 写真とグラフの場合ではテスト済み。 図がすべて挿入し終わった段階で実行する。 ーー 図のあるシートは、Sheet1。 標準モジュールに Sub Test01() For i = 1 To Worksheets("Sheet1").Shapes.Count Worksheets("Sheet1").Shapes.AddTextbox(msoTextOrientationHorizontal, 100, 60, 100.5, _ 22.5).Select Selection.Left = Worksheets("Sheet1").Shapes(i).Left + Worksheets("Sheet1").Shapes(i).Width * 0.5 Selection.Top = Worksheets("Sheet1").Shapes(i).Top + Worksheets("Sheet1").Shapes(i).Height + 10 Selection.Text = "図表番号" & i Next i End Sub ーー (1)図の追加には対応してない (2)図の種類の多様性混在に不安あり。 (3)同種の写真など単一の種類の図(Shapes)である。 (4)「図表番号 XX」という文句や表示位置は、少々の修正で対応できる。   テキストボックスの枠線を消すのは簡単。 (5)図の下には、シートにおいて、適当な空白部を採ること。 図をマウスなどでクリックしたときの、イベントとそのオブジェクトを捉まえる方法がわからず 断念した。  小生の情報収集力が弱いのかも。

Jmasa0123
質問者

お礼

いろいろ調べていただき、またVBAを作成してくださりありがとうございます。確かにワードの情報はたくさん出てきましたが、1つの図面上にクリックしたらナンバリングするものはワードにもありませんでした。VBAとマクロの違いも判らずトライしようとしたのがそもそも間違いかもしれませんでした。貴殿のVBAはエクセル上で動作を確認いたしました。VBAとは何かが少し理解できました。ありがとうございます。

関連するQ&A