今年入社した新人で、コンピュータ系の会社に勤めてます。
プログラミング経験は全くないので細かく教えていただきたいです。
エクセルのマクロを使って、以下のような処理をしたいと
思っています。
エクセルシート上に長方形のオートシェイプが何個かあります。
(バーのような細いものです。)
それをクリックすると「他の図形とコネクタ線でつなぎますか?」と
いう質問がでて、「はい」を選択します。
そして他のつなぎたいオートシェイプをクリックすると、
その元の図形の右端とつなぎたい図形の左端がカギ線矢印コネクタでつながる、といったマクロを作りたいです。
一応msgboxまではできていますが、つなぐための文がわかりません。
Sub AutoShape_Connect()
If MsgBox ("他の図形とコネクタ線でつなぎますか?" ,vbYesNo + vbQuestion = vbYes then
うまく伝わっていますでしょうか?
ぜひよろしくお願いします。
No.2ベストアンサー
- 回答日時:
Option Explicit
Sub prep() 'テストシート作成
With Sheets.Add
.Rectangles.Add(100, 100, 100, 10).OnAction = "try"
.Rectangles.Add(300, 100, 100, 10).OnAction = "try"
End With
End Sub
Sub try()
Static x As String
Dim ws As Worksheet
If Len(x) = 0 Then
If MsgBox("connect?", vbYesNo) = vbNo Then Exit Sub
x = Application.Caller
Else
Set ws = ActiveSheet
With ws.Shapes.AddConnector(msoConnectorElbow, 0, 0, 0, 0)
.Line.EndArrowheadStyle = msoArrowheadTriangle
With .ConnectorFormat
.BeginConnect ws.Shapes(x), 4
.EndConnect ws.Shapes(Application.Caller), 2
End With
End With
x = ""
Set ws = Nothing
End If
End Sub
上記コードを新規WorkBookの標準モジュールに置いて、Sub prep()を実行してください。
その結果、追加されたシートのシェイプをクリックしてテストしてみてください。
それでエラーが出るようならエラーメッセージも教えてください。
ちなみにExcelのバージョンは何ですか?
もし2007だったら動作確認してません。
([win2000/xl2000][winXP/xl2003]で動作確認済み)
No.1
- 回答日時:
Excelには、便利なマクロの記録機能があります。
[ツール]-[マクロ]-[新しいマクロの記録...]です。単純な『カギ線矢印コネクタでつながる、といったマクロ』については
まずはこれを活用して調べる事をおすすめします。
さらに、本ケースはちょっと工夫しなければいけません。
後述の方法は、[Caller プロパティ]と[Static ステートメント]について知っておく必要があります。
詳しくはヘルプで調べてください。
『マクロの登録を使って』という事なので、
Application.Callerプロパティで、マクロ実行したシェイプの名前を取得できます。
これをStatic変数に受ける事で、1回目の実行か2回目の実行かを判断し、
同時に、コネクト元とコネクト先のシェイプの名前を取得して処理します。
Sub try()
Static x As String
If Len(x) = 0 Then
If MsgBox("connect?", vbYesNo) = vbNo Then Exit Sub
x = Application.Caller
Else
With ActiveSheet
With .Shapes.AddConnector(msoConnectorElbow, 0, 0, 0, 0)
.Line.EndArrowheadStyle = msoArrowheadTriangle
.ConnectorFormat.BeginConnect .Parent.Shapes(x), 4
.ConnectorFormat.EndConnect .Parent.Shapes(Application.Caller), 2
End With
End With
x = ""
End If
End Sub
別案で、Excel自体の機能を活用する方法ならもっと簡単です。
Sub try2()
If MsgBox("connect?", vbYesNo) = vbNo Then Exit Sub
Application.CommandBars.FindControl(ID:=2642).accDoDefaultAction
End Sub
操作手順についても、大差ないと思いますが。
この回答への補足
ありがとうございます。早速試してみました。
try2()を試してみましたが、コネクタをつなぐ
コマンドが実行されました。
もう一つ質問させていただきたいのですが、
コネクタをつないでくれるところまで
オートシェイプをクリックしただけで自動でできないでしょうか?
try()の方が自動で右端と左端をつないでくれるものだと
思うのですが、こちらは実行してみたところ
エラーがでてしまいました。
.ConnectorFormat.BeginConnect .Parent.Shapes(x), 4
この文で処理が止まってしまいました・・・。
すみません、もしわかりましたら
回答お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) WORD2007で矢印が変わる 1 2022/10/02 09:02
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) エクセルVBA マクロ処理中のポップアップメッセージについて 1 2023/08/04 21:34
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/11 11:47
- Excel(エクセル) 教えて下さい。 ●過去のエクセルのファイルデータの中に、ヘッダーのところに図形を登録しています。 ● 2 2023/04/11 17:40
- ノートパソコン 教えて下さい。過去のエクセルのファイルデータの中に、ヘッダーのところに図形を登録しています。 今回新 4 2023/04/11 15:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
【マクロ】1つのマクロの中に...
-
Excel マクロ VBA プロシー...
-
エクセルのマクロについて教え...
-
エクセルマクロでワードの一ペ...
-
EXCELマクロでのThisisWor...
-
エクセルのマクロについて教え...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
エクセルのマクロについて教え...
-
エクセルで特定の列が0表示の場...
-
エクセルのマクロについて教え...
-
Excelで大量のデータを規則的に...
-
エクセルに張り付けた写真のフ...
-
Excelマクロを引数付で起動
-
カレンダーのイベント期間に矢...
-
エクセルのマクロについて教え...
-
一つのTeratermのマクロで複数...
-
VisualStudio2022をマクロみた...
-
マクロで空白セルを詰めて別シ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報