描画した Line 番号の取得方法

このQ&Aのポイント
  • VB6 Excelで線を引いた後、その線の Line 番号を取得する方法が分からないです。
  • 質問者は、Excel VBAで2本の線を引き、それらをグループ化する方法を知りたいと考えています。
  • 質問者は、下記のコードを使用して線を引いていますが、線の Line 番号を取得する方法がわかりません。
回答を見る
  • ベストアンサー

描画した Line 番号の取得方法

描画した Line 番号の取得方法 VB6 Excel,2000 線をVBで2本引き、その線をグループ化させようと考えています。 下記コードの Range(Array("LIne " & 線A, "LIne " & 線B))に 2本引いた線の番号を入れたいのですが引いた線のLine番号を 取得する方法が分かりません、宜しくお願いします。 Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") xlApp.ActiveSheet.Shapes.AddLine 50, 50, 100, 100 '線A xlApp.ActiveSheet.Shapes.AddLine 100, 50, 50, 100 '線B xlApp.ActiveSheet.Shapes.Range(Array("LIne " & 線A, "LIne " & 線B)).Select xlApp.Selection.ShapeRange.Group.Select Set xlApp = Nothing

  • mmac
  • お礼率94% (64/68)

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

1例 Dim xlApp As Excel.Application Set xlApp = GetObject(, "Excel.Application") lnameA = xlApp.ActiveSheet.Shapes.AddLine(50, 50, 100, 100).Name '線A lnameB = xlApp.ActiveSheet.Shapes.AddLine(100, 50, 50, 100).Name '線B MsgBox lnameA & " " & lnameB xlApp.ActiveSheet.Shapes.Range(Array(lnameA, lnameB)).Select xlApp.Selection.ShapeRange.Group.Select Set xlApp = Nothing

mmac
質問者

お礼

.Name を追加で実行すると共にLine名まで取得出来るんですね。 おかげさまで解決しました。有難う御座いました。

関連するQ&A

  • 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でオートシェイプのグループ化についての質問です。

    VBAでオートシェイプのグループ化についての質問です。 オートシェイプ線(Line)で台形を作成し全てを選択し、グループ化したいと考えています。 また、連続して台形を作成していきたいと考えています。 ?4本線を引く ?グループ化(Aグループ) ?4本線を引く ?グループ化(Aグループ)  ⇒ 連続して作成・・・ Dim st() As Variant Dim ob As Shape Dim MyLine As Shape '線の作成 Set MyLine = ActiveSheet.Shapes.AddLine(startX, startY, widthX, heightY) '線の選択 For Each ob In ActiveSheet.Shapes   ReDim Preserve st(j)   st(j) = ob.name   j = j + 1 Next ob 'グループ化 Worksheets("test").Shapes.Range(st).Select Selection.ShapeRange.Group.Select と上記コードで一つのグループは作成出来たのですが、次に作成すると Worksheets("test").Shapes.Range(st).Select Selection.ShapeRange.Group.Select でエラーになります。 恐らく前のグループ化内の線も選択してしまうのではないかと思っていますが、対処の仕方が解りません。 線の作成方法から選択方法等いろいろ意見が聞きたいと思っています。 アドバイスよろしくお願いいたします。 m(__)m

  • VBA のAddlineで引いた線を削除したい。

    Chart上にAddlineした直線が消せません。 あるイベントで ActiveChart.Shapes.AddLine(Xp1, Yline, Xp2, Yline).Select Selection.ShapeRange.Line.DashStyle = msoLineDash Selection.Name = "SUB_LINE" この時Chart上にはラインが引かれ名称が付けられています 又違うイベントで ActiveSheet.Shapes("SUB_LINE").Selectや Shapes("SUB_LINE").Delete として先ほど引いたLineを消去したいのですが Deleteの結果特にエラーも出ず、削除できません ツールを使って書いたLineは For Each SerchCShp In ActiveSheet.Shapes next の中で削除できたりするのですが 同じようにコーディングしても消えてくれません。  AddlineでChartに書き込んだLineを消去する方法を 教えてください。 Chartの補助線等は別の機能で使用しているので 使えずAddlineで線を引くしかないと言う状況で 引いた線を消したいのは引きなおしさせるためです WindowsXp+Office2003のExcel VBAを使用しています。

  • VBAのGroup化について

    お世話になります。以下のマクロがうまく動きません。 ------------------------------------------------- Dim objShp1 As Shape For Each objShp1 In ActiveSheet.Shapes If objShp1.Name = "Picture 3" Then ActiveSheet.Shapes.Range(Array("A", "B", "Picture 3")).Select Selection.ShapeRange.Group.Select Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 Else ActiveSheet.Shapes.Range(Array("A", "B")).Select Selection.ShapeRange.Group.Select <---------(1) Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 End If Next ------------------------------------------------- このマクロは全体の一部分になりますが、(1)のところでエラーになります。 どこが間違っているのか、さっぱりわかりません。 すみませんが、お助けいただければ幸いです。

  • VBAですべての図形を消したい

    お世話になります。 エクセルにて矢印等の図形をすべて選択し消去するにはどのようにコードを書けばよろしいですか。 ActiveSheet.Shapes.Range(Array("Line 1", "Line 2")).Select Selection.Delete これだと図形番号をすべて書かなくてはならないですね。 Range()内を現在表示されてる図形全部という書き方は?

  • 図形 Selectionが省略できない VBA

    「タイトル」という名の図形はシート上に存在するのですが、 Sub a() ActiveSheet.Shapes.Range(Array("タイトル")).ShapeRange.Height = 110 End Sub Sub b() ActiveSheet.Shapes.Range(Array("タイトル")).Select Selection.ShapeRange.Height = 110 End Sub aだとエラーになりますが、 bだと正常に動きます。 SelectやSelectionは省略できるものだと思ってるのですが なぜaだとエラーになるのでしょうか? 一度図形をアクティブにする動作が必要なのですか?

  • エクセル VBA 画像操作

    VBAについて質問です。 画像を何枚かを重ねて、シート上に置いてあります。 VLOOKUPにて、画像番号を獲得して、その番号の画像を最上面へ移動させたいのですが ActiveSheet.Shapes.Range(Array("Picture 201")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 221")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ActiveSheet.Shapes.Range(Array("Picture 215")).Select ActiveWindow.SmallScroll ToRight:=-342 Selection.ShapeRange.ZOrder msoBringToFront ("Picture 215")の部分を、セルの値で変更したいのですが どうか、お力お貸しください。 よろしくお願いします。

  • EXCEL VBA これであっていますか?

    エクセルに地図を貼り付け、その中のある地点Aから半径1キロ、2キロ、3キロといった具合に円を描いています。ある地点B、Cも同様に円があります。セルに“A” と入力した際に該当する地点の円(1キロ、2キロ、3キロの3種類)を赤く表示し、終了すると円が消える(線なしに変わる)ようにするために以下のようなVBAを組みました。が、円が2つしか赤くならなかったり、 ばあいによっては「インデックスが境界を超えています」とエラーが出たりします。 どうしたら良いか教えてください。 Sub iro() Dim i As Variant i = InputBox("表示する地点を指定してください", "地点指定") If i = "A" Then ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False modosu ElseIf i = "B" Then ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False Else MsgBox "指定した地点がありません", vbOKOnly End If End Sub Sub hyoji() Selection.ShapeRange.Line.Visible = msoTrue '「線なし」に設定されている場合、線を表示 Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 Range("A1").Select End Sub Sub modosu() Selection.ShapeRange.Line.Visible = msoFalse '「線なし」に設定 Range("A1").Select End Sub

  • 引いた線をまとめて消したい。

    ActiveSheet.Shapes.AddLine(fromx, fromy, endx, endy).Select 上記で引いた線が何本か在ります。 コレを一つずつ選択せずにいっきに消す方法はないでしょうか。 宜しくお願いします。

  • エクセル VBA : テキストボックスのグループ化

    エクセル VBAにてテキストボックスをグループ化したいのです。 マクロを記録すると、 ActiveSheet.Shapes.Range(Array("Oval 82", "Text Box 83")).Select Selection.ShapeRange.Group.Select となります。 "Text Box 83"のように常に名前が固定されているわけではないので、セルのA1からC10にある図形を選択してグループ化するようにしたいのです。 ご存知の方、アドバイス願います。

専門家に質問してみよう