現在、以下のようなことを行えるマクロを作成しています。
<表1>
Name, Distance, Next
A, 10, B
B, 5, D
C, 7, -
D, 15, C
<表1>の内容を元にしてNameの図形(四角)を用意。
A,B,C,Dそれぞれ図形があり、Distanceの数で図形の幅を変える。
Nextの順で図形をコネクタで順に繋いでいきます。
イメージ) [ A ] - [ B ] - [ D ] - [ C ]
単に図形を作成したり、コネクタで繋ぐだけならできたのですが、
表から名前を持ってきたりとかになると、お手上げ状態です。
どうかお知恵をお借りできないでしょうか。
環境 : Windows7/Office 2010
No.1ベストアンサー
- 回答日時:
Sub pre()
With Worksheets.Add
With .Rectangles
.Add(100, 100, 30, 10).Name = "A"
.Add(200, 200, 30, 10).Name = "B"
.Add(300, 300, 30, 10).Name = "C"
.Add(400, 400, 30, 10).Name = "D"
End With
.Range("A1:C5").Value = [{"name","d","next";"A",10,"B";"B",5,"D";"C",7,"-";"D",15,"C"}]
End With
End Sub
こんなシートがあったとして、
取り敢えず基準となるA列をLoopして順番に処理する感じです。
セル値を読み取って図形を名前で識別します。
Shape型の変数に受けたほうが解りやすいかと思います。
#セル値には図形の名前を指定するのが前提ですが
Sub try()
Dim r As Range
Dim s As Shape
Dim e As Shape
Dim c As Shape
Dim i As Long
With ActiveSheet
For Each r In .Range("A2", .Cells(.Rows.Count, 1).End(xlUp))
On Error Resume Next
Set s = .Shapes(r.Value)
If Not s Is Nothing Then
s.Width = r.Offset(, 1).Value
Set e = .Shapes(r.Offset(, 2).Value)
On Error GoTo 0
If Not e Is Nothing Then
'*****Connector処理
Set c = .Shapes.AddConnector(msoConnectorElbow, 0, 0, 0, 0)
c.Line.EndArrowheadStyle = msoArrowheadTriangle
With c.ConnectorFormat
.BeginConnect s, 4
.EndConnect e, 2
End With
'(最短経路で再接続)
'c.RerouteConnections
'*****
Set e = Nothing
End If
Set s = Nothing
End If
Next
End With
End Sub
Connectorについての処理はマクロ記録からでも参考になると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Excel(エクセル) ExcelのVBAコードについて教えてください。 1 2022/06/17 15:40
- Word(ワード) wordのテキストボックスが変! 2 2022/10/13 17:32
- Excel(エクセル) エクセルVBAで図形のテキストを取得してセルに入力 2 2022/10/05 23:09
- Excel(エクセル) エクセルの値を元に図形の色を変えたい 2 2022/05/11 01:37
- Excel(エクセル) Excelグラフについて 1 2023/05/12 16:26
- Word(ワード) WORD2007で矢印が変わる 1 2022/10/02 09:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/11 11:47
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
マクロの登録を使って、オートシェイプどうしをカギ線矢印コネクタでつなぐ
Visual Basic(VBA)
-
Excel VBAのオートシェイプの名前の取得(?)
Visual Basic(VBA)
-
マウスで選択した図形のみVBAで移動したい。
Visual Basic(VBA)
-
-
4
mso って何ですか
Access(アクセス)
-
5
【EXCEL VBA】オートシェイプをクリックした時にそのオートシェイプの名前を取得したい
Visual Basic(VBA)
-
6
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
-
7
エクセルで同じ数字同士を自動で線で結ぶVBAを教えてください
Excel(エクセル)
-
8
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
9
エクセルでエラーが出て困っています。
Excel(エクセル)
-
10
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
11
着地点が2点ある→を出すには
Windows Vista・XP
-
12
条件に一致したときに画像を表示したいのですが・・。
Excel(エクセル)
-
13
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
14
エクセル ユーザーフォームにオートシェープ(図形)を貼り付けるこは可能なのでしょうか?
Excel(エクセル)
-
15
VBA Shapes コピーと名前
Excel(エクセル)
-
16
1回のみ折り曲げる矢印を作りたい
Excel(エクセル)
-
17
[VBA] Classから他のClassを呼び出す場合
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルのマクロについて教え...
-
特定のPCだけ動作しないVBAマク...
-
Excel マクロ VBA プロシー...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
TERA TERMを隠す方法
-
Excel VBAからAccessマクロを実...
-
ExcelのVBA。public変数の値が...
-
ソース内の行末に\\
-
特定文字のある行の前に空白行...
-
Excel マクロでShearePoint先の...
-
VBAコードについて教えてくださ...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelVBAでPDFを閉じるソース
-
オートフィルターとExcelマクロ...
-
Teraterm 1行空白を入れたい。
-
エクセルマクロでワードの一ペ...
-
組んだマクロをメールで送る
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
エクセルに張り付けた写真のフ...
-
EXCELのVBAでRange("A1:C4")を...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
マクロ実行時、ユーザーフォー...
-
特定文字のある行の前に空白行...
-
エクセルVBA
-
wordを起動した際に特定のペー...
-
マクロの記録を使用したマクロ...
-
ダブルクリックで貼り付けた画...
おすすめ情報