• 締切済み

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

   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% (976/1799)
回答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

  • エクセルやワードの図の回転

    図で作った矢印などをオートシェイプの書式設定で角度の数値を入れていくことにより調整はできますが、ショートカットキーでこの角度を微妙に調整することはできないでしょうか?

  • エクセルのマクロで、知恵をお貸しください。

    エクセルのマクロで、知恵をお貸しください。 A1 A2 A3 A4 A5にあるオートシェイプ(矢印)  →  →  →  →  → を範囲選択で、 (1)B1以降横につなげるマクロは、できますか。   →→→→→ (2)B1とB2に交互に(列は重ねず)並べるマクロは、可能でしょうか。   → → →    → →

  • エクセル、マクロ詳しい方に質問

    例えばA1のセルに数字の1を入れたら そのA1セルの文字の真上に (透過処理を行っている)オートシェイプを表示させることは可能でしょうか なおかつ、表示されたオートシェイプに邪魔されることなく 数字を変更させることができるようになりますか また数字を入れた後、その数字を消したら 表示されたオートシェイプも一緒に消えるようにしたいのです これは出来るがこれは出来ないなどでもいいです 計算式やマクロ何を使ってもいいですが、 できるだけ単純なものがよいです 難しいと思いますがお願いします

  • EXCEL 範囲指定後矢印線を引くマクロの作り方

    範囲選択した任意(例:A1~C1)のセルに、オートシェイプの矢印線を自動的に引くマクロの作り方を教えて下さい。 できれば、矢印線の始点にオートシェイプの丸(黒丸ではなく白丸)も一緒に引けるマクロも教えて下さい。 範囲指定するセルの長さは一定ではなく、長さがいろいろになります。 工程表を作成するにあたり、同じ手順を繰り返す為、マクロ化したいです。

  • Excelで矢印。

    セルA2からセルA1に移動したということを矢印を使って入力したいのですが、湾曲した矢印はオートシェイプの曲線や矢印オートシェイプの線を細くしたりして使うしかないでしょうか? セルB2からセルA2の中に上向きの湾曲矢印を書きたいのですが、ほかに方法はありますか?

  • エクセルマクロに詳しい方

    いつもご質問ばかりで申し訳ございません。 エクセルのマクロで質問なんですが、ある列のある範囲(例えばG列の3~20)の各セルの間(G3とG4、G4とG5といった感じです)にオートシェイプの矢印マークを書き込む マクロって可能なのでしょうか?矢印の向きは左向きで、長さは矢印のみぐらいの長さで、矢印の角度はなしです。 もしこんなマクロが可能なら教えて下さい。 よろしくお願い致します。          以  上

  • オートシェイプ図形の角度をマクロで変えたい

    エクセルのオートシェイプで図形を作って、それをグループ化して、 A1のセルへ数値を入力するとシート1上にあるオートシェイプの角度が変化するようにしたいのです。マクロで出来るでしょうか。 シート上の図形は、Group25 です。 エクセル2000を使用しています。 よろしくお願いします。

  • Excelの件

    Excelで表を作る時オートシェイプで矢印を入れるのですが、1回矢印を入れる毎にオートシェイブからやり直すので、非常に手間が掛かるので、簡単にいくつでも続けて矢印が入れられないでしょうか? 教えて下さい。

  • 入力された数値とその左側の数値(文字)で表の作成

     http://okwave.jp/qa/q8214979.html(「入力された数値とその右側(左側でした)の数値(文字)での表作成」)で質問した者です。その際は大変お世話になりました。有り難うございました。その後、その回答に対して新たに質問があり「補足」で質問させて頂きました。しかし、トピックを新たに立てた方が回答が寄せられると思い、トピックを立てさせて頂きました。ご理解を頂けばと思います、  質問内容は、下の「表A」から、数値が入力され、かつ「0」よりおおきな数値だけを選んで(この場合「B列)、その数値の左側あるのセルの文字(この場合「A列」。数値の場合もあります)と一緒に移動させて、「表B」を作成することができる関数はどのようにつくれば良いのでしょうか、改めてご教示をお願いします。宜しくお願いします。

  • エクセルでのオートシェイプについての質問です。

    エクセルでのオートシェイプについての質問です。 エクセルのシートの一定の決まったセルに数字を打ち込むとそれに連動してオートシェイプの矢印の長さを変更できるようにしたいのですが、わかる方いますでしょうか? 例えばB1に「1.0」、B2に「1.5」、B3に「2.0」を入力した場合、連動してc1,c2,c3にある矢印の長さが変わるものです。 VBAを理解したいのですが、できれば、コピー貼付けできるコードを教えていただきたいのです。

専門家に質問してみよう