• 締切済み

エクセルでマクロを作成したいのですが・・・

   A   B   C   D    1 数値 数値  差  角度 2  5   6    1   0 3  8   2    6   90 4  2   10   8   135 5  2   7    5   225     の様な表を作成し、画像の様な円の中心点aの真上を0度とし、時計回りに角度を振ります。 数値AがBより大きい場合は左側、小さい場合は右側にオートシェイプで矢印を出し、且つ数値AとBの差を自動で表示させたいです。 かんたんに出来ますでしょうか?

みんなの回答

  • m_and_dmp
  • ベストアンサー率54% (987/1817)
回答No.2

どのようなことをしたいのか分からないので見当外れかもしれませんが、とりあえず、つぎのようなコードで実現できます。 Sub Sample1() Dim SSIG(4) With ActiveSheet i = 1 TOP: SSIG(i) = Cells(i + 31, 8) If i = 1 Then .Shapes("ARC1").Select If i = 2 Then .Shapes("ARC2").Select If i = 3 Then .Shapes("ARC3").Select If i = 4 Then .Shapes("ARC4").Select If SSIG(i) = 1 Then GoTo BAH If SSIG(i) = -1 Then GoTo EAH BAH: Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadNone Selection.ShapeRange.Line.BeginArrowheadWidth = msoArrowheadWidthMedium Selection.ShapeRange.Line.BeginArrowheadLength = msoArrowheadLengthMedium i = i + 1 If i > 4 Then GoTo EE GoTo TOP EAH: Selection.ShapeRange.Line.BeginArrowheadStyle = msoArrowheadNone Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadTriangle Selection.ShapeRange.Line.EndArrowheadWidth = msoArrowheadWidthMedium Selection.ShapeRange.Line.EndArrowheadLength = msoArrowheadLengthMedium i = i + 1 If i > 4 Then GoTo EE GoTo TOP EE: End With End Sub エクセルシートにはつぎのように記入されているものとします。 マクロで関係するセルは、符号が記入されているセルだけです。 符号が記入されているセルは、上からH32, H33, H34, H35です。 マクロでは、RC形式で参照しますので、H32は、Cells(32,8)です。 貴サンプルでは符号の列はありませんが、作っておいた方がマクロが簡単になります。 符号を取得する関数は、=SIGN(A-B)です。 差がゼロの時どうするかは考えておりません。両端の矢印ともなしにするには、 NAH: ......BiginArrowhead... ..........None .......EndArrowhead...... .........None を付け加えたらいいと思います。 A B C D E 数値 数値 符号 差 角度 1 8 6 1 2 0 2 1 2 -1 1 90 3 12 10 1 2 135 4 9 7 1 2 225 円の周りにあらかじめ弧(湾曲した線)を描き、上から右回りに ARC1, ARC2, ARC3, ARC4 とオブジェクトの名前を変更します。変更するには、そのオブジェクトを選択した時アドレスバーに表示される名前を変更して、エンターします。名前は何でもいいですが、マクロの中で使うので簡単なものがいいです。 弧の上(右、左)にテキストボックスを描画します。テキストボックスの中には何も記入せず、テキストボックスを選択して、数式バーに = と記入後、表示するセルをクリックします。(テキストボックスにセルの内容が表示されます。) あとは、コードを記述して実行するだけです。まだまだスリムにすることができるかもしれませんが、そちらはお任せします。

回答No.1

Excelには記録する機能がありますから それを使用すればある程度コードを自動生成する事が出来ます。 矢印を出力した場合のコード 数字(テキスト)を出す場合のコード をとりあえず記録して、判断文で振り分けて処理を書きます。 円の周囲に矢印を出力するので、矢印の始点と終点に関しては一工夫必要ですね …色々考える事が多いので簡単とは言えないですね^^;

関連するQ&A