![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?8acaa2e)
オートシェイプを使った簡単な寸法線の入った図をマクロで書きました。 ステップごとだと期待どおりのアウトプットなのですが、ダイレクトにマクロを実行すると途中のステップがとんでしまうようです。 どうしてでしょうか。 教えてください。
1 Sub 寸法線1()
2 Dim l1, l2, l3, l4, lb, la1, la2, fig1, fig2, fig3, fig4 As Shape
3 x1 = 200
4 y1 = 500
5 x2 = x1 + 100
6 k = Cells(7, 5).Value / Cells(7, 4).Value
7 y2 = y1 - 100 * k
8 Set l1 = ActiveSheet.Shapes.AddLine(x1, y1, x2 + 20, y1)
9 Set l2 = ActiveSheet.Shapes.AddLine(x1, y1, x1, y2 - 15)
10 Set lb = ActiveSheet.Shapes.AddLine(x1, y1, x2, y2)
lb.Line.Weight = 2#
11 Set l3 = ActiveSheet.Shapes.AddLine(x2 + 5, y2, x2 + 20, y2)
12 Set l4 = ActiveSheet.Shapes.AddLine(x2, y2 - 5, x2, y2 - 15)
13 Set la1 = ActiveSheet.Shapes.AddLine(x2 + 12.5, y1 - 2, x2 + 12.5, y2 + 2)
14 la1.Line.BeginArrowheadStyle = msoArrowheadTriangle
15 la1.Line.BeginArrowheadLength = msoArrowheadLengthMedium
16 la1.Line.BeginArrowheadWidth = msoArrowheadWidthMedium
17 la1.Line.EndArrowheadStyle = msoArrowheadTriangle
18 la1.Line.EndArrowheadLength = msoArrowheadLengthMedium
19 la1.Line.EndArrowheadWidth = msoArrowheadWidthMedium
20 Set la2 = ActiveSheet.Shapes.AddLine(x1 + 2, y2 - 10, x2 - 2, y2 - 10)
21 la2.Line.BeginArrowheadStyle = msoArrowheadTriangle
22 la2.Line.BeginArrowheadLength = msoArrowheadLengthMedium
23 la2.Line.BeginArrowheadWidth = msoArrowheadWidthMedium
24 la2.Line.EndArrowheadStyle = msoArrowheadTriangle
25 la2.Line.EndArrowheadLength = msoArrowheadLengthMedium
26 la2.Line.EndArrowheadWidth = msoArrowheadWidthMedium
27 Set fig1 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
x1 - 10, y1 + 5, 17, 17)
28 fig1.Select
29 Selection.Characters.Text = Str(Cells(6, 3))
30 Selection.Characters.Font.Bold = True
31 Selection.ShapeRange.Line.Visible = msoFalse
32 Set fig2 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
x2 + 5, y2 - 20, 18, 18)
33 fig2.Select
34 Selection.Characters.Text = Str(Cells(7, 3))
35 Selection.Characters.Font.Bold = True
36 Selection.ShapeRange.Line.Visible = msoFalse
37 Set fig3 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
x1 + (x2 - x1) * 0.5 - 13, y2 - 32, 45, 17)
38 fig3.Select
39 Selection.Characters.Text = Str(Cells(7, 4))
40 Selection.ShapeRange.Line.Visible = msoFalse
41 Set fig4 = ActiveSheet.Shapes.AddTextbox(msoTextOrientationUpward, _
x2 + 15, y1 - 0.5 * (y1 - y2) - 8, 17, 45)
42 fig4.Select
43 Selection.Characters.Text = Str(Cells(7, 5))
44 Selection.ShapeRange.Line.Visible = msoFalse
45 MsgBox "pause"
46 Call l1.Select
47 Call l2.Select(False)
48 Call l3.Select(False)
49 Call l4.Select(False)
50 Call lb.Select(False)
51 Call la1.Select(False)
52 Call la2.Select(False)
53 Call fig1.Select(False)
54 Call fig2.Select(False)
55 Call fig3.Select(False)
56 Call fig4.Select(False)
57 MsgBox "hit any"
58 Selection.ShapeRange.Group.Delete
59 End Sub
Cells(7, 5)=50
cells(7,4)=100
cells(6,3)=1
cells(7,3)=2
です。
左端に行番号をふってあります。 36から44まで飛んでしまいます。
節点座標
XY
100
210050
No.1ベストアンサー
- 回答日時:
処理が飛ばされているわけではないようですよ
シェイプの更新がなされていないだけのようです
44行のMsgBoxの直前に DoEvents を追加してみましょう
これで テキストボックスも表示されると思います
VBEから実行した場合と シェイプのイベントやツール>マクロから実行した場合で画面の更新のタイミングが違うために起きている現象のようです
ありがとうございます でました図が! 一人だけではとうてい到達できないものでした。 何とかVBEができるようになりたい またてほどきお願いします
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 複数セルに〇印をつけるマクロ 4 2022/09/07 05:33
- Visual Basic(VBA) エクセル VBAについて教えてください 2 2023/04/26 13:25
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) EXCELのセル相互同期用のVBAでの不具合 3 2022/08/10 11:44
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あああ..ああい..ああう とい...
-
VBAバーコード照合 バーコード...
-
VBAにて『元に戻すボタン』を作...
-
vbs 文字位置を中央に
-
select caseの入れ子
-
エクセルのマクロについて教え...
-
ExcelVBA修正のお願い
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
VBAマクロ実行時エラーの修正に...
-
Worksheets メソッドは失敗しま...
-
エクセルVBA 配列からセルに「...
-
エクセル マクロ オートフィ...
-
VBA シートをコピーする際に Co...
-
[EXCEL]ボタン押す→時刻が表に...
-
ワイルドカード「*」を使うとう...
-
【VBA】【ユーザーフォーム_Lis...
-
エクセルVBAが途中で止まります
-
「段」と「行」の違いがよくわ...
-
エクセルで特定の文字列が入っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あああ..ああい..ああう とい...
-
VBAにて『元に戻すボタン』を作...
-
select caseの入れ子
-
VBAバーコード照合 バーコード...
-
vbs 文字位置を中央に
-
xlookup関数の引数を利用して検...
-
エクセルで選択したセルがディ...
-
エクセルで簡単なオートシェイ...
-
ある一定時間の最高値と最小値...
-
指数関数近似を行うプログラム...
-
セルに入ってる数式を他のセル...
-
ListBox1 ListBox2 条件抽出
-
打込み作業の自動化
-
C++で、b[bit]の非負整数(例え...
-
VBAマクロにての絶対値
-
エクセルを開いたらカウントし...
-
スペース区切りのAND検索
-
日付の年の確認方法について A1...
-
エクセルVBAのプログラム
-
エクセル マクロについて教えて...
おすすめ情報