Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1758 / 13645 ツリー ←次へ | 前へ→

【72075】散布図で画像をマーカ-位置に指定した角度で置きたい 目指せマクロの達人 12/5/26(土) 19:35 質問[未読]
【72079】Re:散布図で画像をマーカ-位置に指定した角... rabbit 12/5/27(日) 11:06 発言[未読]
【72083】Re:散布図で画像をマーカ-位置に指定した角... 目指せマクロの達人 12/5/27(日) 14:17 発言[未読]
【72085】Re:散布図で画像をマーカ-位置に指定した角... rabbit 12/5/27(日) 16:51 発言[未読]
【72090】Re:散布図で画像をマーカ-位置に指定した角... 目指せマクロの達人 12/5/28(月) 17:44 発言[未読]
【72097】Re:散布図で画像をマーカ-位置に指定した角... 目指せマクロの達人 12/5/29(火) 12:53 発言[未読]
【72101】Re:散布図で画像をマーカ-位置に指定した角... kanabun 12/5/29(火) 17:08 発言[未読]
【72106】Re:散布図で画像をマーカ-位置に指定した角... 目指せマクロの達人 12/5/29(火) 22:55 お礼[未読]
【72089】Re:散布図で画像をマーカ-位置に指定した角... kanabun 12/5/28(月) 16:22 発言[未読]
【72091】Re:散布図で画像をマーカ-位置に指定した角... 目指せマクロの達人 12/5/28(月) 17:55 発言[未読]
【72117】Re:散布図で画像をマーカ-位置に指定した角... rabbit 12/5/30(水) 22:02 発言[未読]
【72118】Re:散布図で画像をマーカ-位置に指定した角... あすなろ 12/5/30(水) 22:58 発言[未読]
【72120】Re:散布図で画像をマーカ-位置に指定した角... kanabun 12/5/31(木) 8:45 発言[未読]
【72121】Re:散布図で画像をマーカ-位置に指定した角... マクロはひとまずコピペ 12/5/31(木) 17:01 お礼[未読]

【72075】散布図で画像をマーカ-位置に指定した角...
質問  目指せマクロの達人  - 12/5/26(土) 19:35 -

引用なし
パスワード
   EXCEL標準コマンドを使って、散布図を作成しました。
全マーカーの代わりに同じ画像(簡単な線図)をおきたい。画像の角度がすべて同じなら、EXCELの基本機能でマーカーの代わりに、保存してある画像を指定をすれば出来ますが、ポイントごとに取り付け角度が異なります。 その角度はポイントごとにマーカーの座標とともに算出してあります。 EXCEL標準だけでは出来そうになく、VBAでこのようなことが出来るとありがたいのですが、よろしくご教示ください。

【72079】Re:散布図で画像をマーカ-位置に指定した...
発言  rabbit  - 12/5/27(日) 11:06 -

引用なし
パスワード
   一般機能では、マーカーを回転する機能はないと思いますので、
VBAでもそれはできないでしょう。
VBAだからといって、特別の機能が追加せれているわけではないと思います。
やるとすれば、Shapeをそこに貼り付けて、移動・回転させることになるでしょうか。
IncrementLeft,IncrementTop,IncrementRotation などを作用させれば
可能だとは思います。Left,Top,Rotationの値を直接設定してもいいかも。
トライしてみてください。
ただ、一つのグラフに多くの図形を組み合わせることになりますから、
本来的なグラフの範疇を超える感じがあるのと、
苦労の割に、見栄えが効果的かどうか不明ですね。

ところで、そもそも追加したい情報は何でしょうか。
各点ごとの値から導かれる角度という数値でしょうか。
角度数値そのものをデータラベルに表示するのでは不可なんですか?
角度を可視化したいなら、データラベルは角度をつけて表示する
ことができるようですから、それを使う方法があるかもしれません。

【72083】Re:散布図で画像をマーカ-位置に指定した...
発言  目指せマクロの達人  - 12/5/27(日) 14:17 -

引用なし
パスワード
   rabbitさん、コメントありがとうございます、

自分のやりたいことを具体的にご説明します。
現わしたいのは散布図を使って散在する点にすべて小さな矢印をつけて、流体の流れを可視化したいのです。点の座標、矢印の向き(ベクトルの長さは一定)はパラメーターを替える都度変わります。矢印の基準点は各点に正確に置けますが、角度をつけることが出来なくて止まっています。 
これが可能になりますと、次のステップではパラメーターを替える都度この散布図を書き換えて、アニメーションのように見せることが可能になると期待しています。
引き続きご指南いただけましたら幸いです。

【72085】Re:散布図で画像をマーカ-位置に指定した...
発言  rabbit  - 12/5/27(日) 16:51 -

引用なし
パスワード
   説明ありがとうございます。
やろうとしていることは大体わかっていた積もりです。
どこまでカスタマイズするかの割り切りの問題です。

私が念頭に置いていたのは、こんな話です。
・データラベルに、角度に応じて"→"もしくは"←"を書き、
 それに適切な傾きを与えれば可能です。
・マーカーそのものは表示せず。
・データラベルのラベルの位置は「中央」
とします。

下記は、円に相当する36個の点をプロットした散布図において、
各点について、円から垂直に外に向いたベクトルを表示する例です。
参考になれば幸いです。
(Excel2010を使用していますが、バージョン依存でしたら失礼)

Sub test()
  Dim k As Long
  Dim theta As Double
  For k = 0 To 35
    theta = Cells(k + 2, 4).Value
    With ActiveChart.SeriesCollection(1).Points(k + 1).DataLabel
      Select Case theta
        Case Is <= 90
          .Text = "→"
          .Orientation = theta
        Case Is <= 270
          .Text = "←"
          .Orientation = theta - 180
        Case Else
          .Text = "→"
          .Orientation = theta - 360
      End Select
    End With
  Next
End Sub

図形を追加する方法も可能は可能だと思います。
それでは頑張って下さい。私はこれで。

【72089】Re:散布図で画像をマーカ-位置に指定した...
発言  kanabun  - 12/5/28(月) 16:22 -

引用なし
パスワード
   ▼目指せマクロの達人 さん:
>EXCEL標準コマンドを使って、散布図を作成しました。
>全マーカーの代わりに同じ画像(簡単な線図)をおきたい。画像の角度がすべて同じなら、EXCELの基本機能でマーカーの代わりに、保存してある画像を指定をすれば出来ますが、ポイントごとに取り付け角度が異なります。 その角度はポイントごとにマーカーの座標とともに算出してあります。 EXCEL標準だけでは出来そうになく、VBAでこのようなことが出来るとありがたいのですが、よろしくご教示ください。
こんにちは〜
> マーカーの代わりに、保存してある画像を指定
ではないのですが、散布図の各要素から指定の方向に 矢印→ を描画する
ことなら、以前構造物のひずみ測定値のプロットでやったことがあります。
参考までにそれを今回用に多少アレンジしたものをアップします。

元データサンプル (A,B,C,D 列)
  … このうち B,C列を使って 散布図は作成してあるものとしています。
番号    X座標    Y座標    測定角度
X1    -120    200    -35
X2    -120    240    -20
X3    -120    280    35
X4    -120    320    45
X5    -60    120    30
X6    -60    160    -10
X7    -60    200    -20
X8    -60    240    0
X9    -60    280    30
X10    -60    320    45
X11    -5    120    0
X12    -5    160    30
X13    -5    200    45
X14    -5    240    50
X15    -5    280    55
X16    -5    320    80
X17    -5    360    70
X18    50    120    45
X19    50    160    45
X20    50    200    30
X21    50    240    45
X22    50    280    35
X23    50    320    45
X24    110    160    55
X25    110    200    65
X26    110    240    80
x27    150    220    90

'--------------------------------------------- 標準モジュール
Option Explicit

Type WinPoint
 x As Double
 y As Double
End Type
Private FACTx As Double, FACT0x As Double
Private FACTy As Double, FACT0y As Double

'グラフのスケール(WindowScale)を ChartのPoint座標に
' 変換する係数をもとめる
Sub SetCoef(Cht As Chart)
 Dim XMIN As Double, XMAX As Double
 Dim YMIN As Double, YMAX As Double
 Dim vxmi As Double, vxma As Double
 Dim vYmi As Double, vYma As Double, t As Double
 Dim Ax As Axis
 
 With Cht
  XMIN = .Axes(1).MinimumScale
  XMAX = .Axes(1).MaximumScale
  YMIN = .Axes(2).MinimumScale
  YMAX = .Axes(2).MaximumScale
  
  With .PlotArea
   vxmi = .InsideLeft
   vxma = vxmi + .InsideWidth
   vYma = .InsideTop
   vYmi = vYma + .InsideHeight
  End With
  If .Axes(2).ReversePlotOrder Then
   t = vYma
   vYma = vYmi
   vYmi = t
  End If
 End With
 
 FACTx = (vxma - vxmi) / (XMAX - XMIN)
 FACT0x = vxmi - FACTx * XMIN
 FACTy = (vYma - vYmi) / (YMAX - YMIN)
 FACT0y = vYmi - FACTy * YMIN
 
End Sub

Function poxy(c, f) As WinPoint
 poxy.x = c * FACTx + FACT0x
 poxy.y = f * FACTy + FACT0y
 
End Function

Private Sub AngToVector(a, r As Double, x As Double, y As Double)
  Dim ang As Double
  ang = a * WorksheetFunction.Pi / 180
  y = r * Sin(ang)
  x = r * Cos(ang)
End Sub

Sub Example1()
  Dim Cht As Chart   '対象グラフ
  Dim Ser As Series   '系列1
  Dim yRange As Range  'Y軸元データ範囲
  Dim xData       'x データ
  Dim yData       'y データ
  Dim ang        '角度データ(Y軸元データ範囲の右隣り)
  Dim Vx1#, Vx2#
  Dim Vy1#, Vy2#
  Dim PoiXY(1 To 2) As WinPoint
  Dim i&
  Const RAD# = 33 '矢印の長さ
 
  Set Cht = ActiveSheet.ChartObjects(1).Chart
  Set Ser = Cht.SeriesCollection(1)
  xData = Ser.XValues
  yData = Ser.Values
  Set yRange = Excel.Range(Split(Ser.Formula, ",")(2))
  ang = yRange.Offset(, 1).Value
  Cht.Lines.Delete 'すべての矢印を削除
  
  '★グラフ軸Scaleをポイント座標に変換する係数を求める
  SetCoef Cht
  
  '矢印描画
  For i = 1 To Ser.Points.Count
    Vx1 = xData(i)
    Vy1 = yData(i)
    PoiXY(1) = poxy(Vx1, Vy1)
    AngToVector ang(i, 1), RAD, Vx2, Vy2
    PoiXY(2) = poxy(Vx1 + Vx2, Vy1 + Vy2)
    With Cht.Shapes.AddLine(PoiXY(1).x, _
      PoiXY(1).y, PoiXY(2).x, PoiXY(2).y).Line
      .EndArrowheadStyle = msoArrowheadTriangle
      .EndArrowheadLength = msoArrowheadLengthMedium
      .EndArrowheadWidth = msoArrowheadWidthMedium
    End With
  Next
End Sub

一番下の Sub Example1() を実行してみてください。
X軸のScale単位で 長さ 33 の矢印が 各Pointから描かれたと思います。

ぼくのほうでは グラフのX軸スケールは -200〜 +200,
X軸スケールは 50〜 400 に設定してあります。各散布図のポイントは
このXY座標でプロットされているわけですが、この点から矢印を描画する
ときは グラフのプロットエリア(Inside Area) の左上端を (0,0)とする
Point座標に変換して長さパラメータを渡さないといけません。
そのための係数を計算しているのが SetCoef 呼び出し です。

グラフのスケールでの x, y座標は poxy()関数を使って グラフ内Point座標
に変換後矢印を描いています。

【72090】Re:散布図で画像をマーカ-位置に指定した...
発言  目指せマクロの達人  - 12/5/28(月) 17:44 -

引用なし
パスワード
   rabbitさん、
むむむ、頭を抱え込むような気持ちになりますが、例文を応用してみて、理解するようがんばります。しばらくレスがなかったとしても66歳の頭脳のスピードゆえとご勘弁ください!

【72091】Re:散布図で画像をマーカ-位置に指定した...
発言  目指せマクロの達人  - 12/5/28(月) 17:55 -

引用なし
パスワード
   kanabunさん、ありがとうございます。

rabbitさんからもヒントをいただいており、自分で再現・確認するのにしばらく時間がかかると思いますがどうぞご了承ください。

強力な助っ人をいただき、現在私は非常に幸せな気持ちでPCに向かって奮闘しております!

【72097】Re:散布図で画像をマーカ-位置に指定した...
発言  目指せマクロの達人  - 12/5/29(火) 12:53 -

引用なし
パスワード
   rabbitさん、
チャートはすでに一つだけ作成してあり、36の点群が円周上に並んでいます。ちなみに使っているのはExcel2010です。
小学生みたいですが、sub-endを丸ごとコピーして、角度データ開始位置("D4")に合わせて若干変えました。格納されているところは標準モジュール:Module1です。
subを走らせたところ早速エラーが出ました。「実行時エラー"91": オブジェクト変数またはWithブロック変数が設定されていません」です。調べると6行目のWith,,,が実行されたところでエラーが出ています。
この程度のことは自分で考えてほしいな、と思われるでしょうがよろしくご指導ください。

【72101】Re:散布図で画像をマーカ-位置に指定した...
発言  kanabun  - 12/5/29(火) 17:08 -

引用なし
パスワード
   ▼目指せマクロの達人 さん:

>subを走らせたところ早速エラーが出ました。「実行時エラー"91": オブジェクト変数またはWithブロック変数が設定されていません」です。
rabbitさん、 お忙しいようなので、ぼくに分かることでヒントだけ

>    With ActiveChart.SeriesCollection(1).Points(k + 1).DataLabel

のところで 「Withブロック変数が設定されていません」とのエラーになる
理由は簡単で、「ActiveChart」がないから、グラフが選択されていないから
です。
グラフが選択されていれば「ActiveChart」が存在するので、そこでエラーに
なることがありません。
しかし、グラフを選択した状態でプログラムを実行すると、今度は直前の

>    theta = Cells(k + 2, 4).Value

の部分でエラーになると思います。
これはなぜかというと、グラフを選択した状態で「アクティブ」なのは
グラフのほうで、ワークシートではありません。
> Cells(k + 2, 4).Value
はセルの前にSheet が省略されていますので、いま「アクティブな」シート
が補われます。グラフを選択しているとき「アクティブなのは埋め込みグラ
フ」なので、そこのところは なんと

    theta = ActiveChart.Cells(k + 2, 4).Value

と解釈されます!  グラフに セルというものは存在しませんから、こんどは
こちらでえらーが発生するという塩梅です(-_-)
応急処置として、
始めに 埋め込みグラフを選択しておいて、
  ActiveSheet.ChartObjects(1).Select
セルの前にシートを指定するようにコードを補えば、
    theta = ActiveSheet.Cells(k + 2, 4).Value
その部分は動くでしょうけど、本来的ではないですね。
本来、対象グラフを ActiveSheet.ChartObjects(1) のように指定し、
セル範囲を記述するときはシートを指定するのを怠らなければ、
グラフを毎回選択する必要はないのです。

それと、DataLabel ははじめての時は HasDataLabelプロパティ
が Falseになっているので、いきなり ラベルテキストをセットしようと
すると そこでもエラーが発生すると思います。

私なら、グラフの系列1 のために変数を用意してそれを利用します。
  Dim k As Long
  Dim theta As Double
  Dim Ser As Series  '系列1 用変数
    
  Set Ser = ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1)
  Ser.HasDataLabels = True
  For k = 1 To Ser.Points.Count '36
    theta = ActiveSheet.Cells(k + 1, 4).Value
    With Ser.Points(k).DataLabel
      Select Case theta
        Case Is <= 90
          .Text = "→"
          .Orientation = theta
        Case Is <= 270
          .Text = "←"
          .Orientation = theta - 180
        Case Else
          .Text = "→"
          .Orientation = theta - 360
      End Select
    End With
  Next

【72106】Re:散布図で画像をマーカ-位置に指定した...
お礼  目指せマクロの達人  - 12/5/29(火) 22:55 -

引用なし
パスワード
   kanabunさん、出来ました! 明晰な診断、お見事であります。

矢印がそれぞれ放射上に向くものの、マーカーの位置からは一律に右にずれていたので、rabbitさんが仰ったようにラベルの詳細設定からラベルの位置を中央にしてやったら、ほぼマーカーの上にきれいにのりました。さらにマーカーを表示せずにすればきれいに矢印が意図したように配置されました。 早速関数を使って角度をいろいろと変えてみましたがうまく現れます。

これから教えていただいた式をじっくりと勉強いたします。EXCELメニューでラベルはテキストとして、一律でよければ角度を設定できるようになっていますから、VBAをこのように活用して、個別に角度を与えることが出来るわけですね。一方ではマーカーに絵を充てることは出来るが、角度を与えるようにはもともと出来ていないので、VBAといえどもその限界を超えるのは難しい(出来ない?)と言うわけでしょうか。

教えていただいたもう一つの方法も試してみます。 ハンドルネーム、「マクロの達人」は何ともおこがましく、当面は「マクロのコピペ」のほうがふさわしいようです、、、、誠にありがとうございました。

【72117】Re:散布図で画像をマーカ-位置に指定した...
発言  rabbit  - 12/5/30(水) 22:02 -

引用なし
パスワード
   戻るつもりはなかったのですが、ご指摘を頂きましたので、
お礼のために戻りました。
kanabun様、ご指摘ありがとうございました。
確かに、ループのなかで、何度も
ActiveSheet.ChartObjects(1).Chart
にアクセスするのは無駄でした。
その他、データラベルの有効化も手で実行した前提でした。

なお、
chartをアクティブにしておくと、
theta = Cells(k + 2, 4).Value
でエラーになるというのはバージョン依存のようで、
2010だとエラーになりませんでした。ご報告まで。

Shapeを追加するコードも参考にさせていただきました。
ありがとうございます。

【72118】Re:散布図で画像をマーカ-位置に指定した...
発言  あすなろ  - 12/5/30(水) 22:58 -

引用なし
パスワード
   お邪魔します。
もう見ておられないかも知れませんが、

> 一方ではマーカーに絵を充てることは出来るが、角度を与えるようにはもともと出来ていない
> ので、VBAといえどもその限界を超えるのは難しい(出来ない?)と言うわけでしょうか。

順序を変えれば出来ます。予め角度を変えた絵(図形)を個々のマーカーに充てればいいです。
手動操作なら、(1)矢印を適当に描画、(2)角度を変える(図形の回転)、(3)その図形をコピー、
(4)マーカー1要素だけを選択、(5)貼り付け。(2)〜(5)の操作を要素の数だけ繰り返す。
但し、クリップボード経由のCopy&Pasteなので、時間がかかり実用向きではありません。

データX,Yの右隣列に角度データがあり、既に散布図が描画されている状態とします。
Sample1は、マーカーの中心を矢印の起点とする
Sample2は、マーカーの中心と矢印の中心を合わせる
両者とも、位置関係がわかるようにグラフを重ねて表示しています。

図形の矢印を使うと、矢じりの影響で位置が若干ずれるので、ブロック矢印を使用しています。
図形のRoatationプロパティは3時の位置が0度ですので適宜補正して下さい。

Sub Sample1()
  Dim newChart As Chart
  Dim oldChart As Chart
  Dim shp1 As Shape
  Dim shp2 As Shape
  Dim gShp As Shape
  Dim i As Long
  Dim fm
  Dim rng As Range
  Const ms As Long = 5
  Const d As Long = 20
  
  With ActiveSheet
    Set newChart = .ChartObjects(1).Chart
    fm = Split(newChart.SeriesCollection(1).Formula, ",")
    Set rng = Range(fm(2)).Offset(, 1)
    
    Set shp1 = .Shapes.AddShape(msoShapeRightArrow, 100, 100, d, ms)
    With shp1
      .Line.Weight = 0.5
      .Line.ForeColor.RGB = vbBlack
      .Fill.ForeColor.RGB = vbBlack
      If Val(Application.Version) > 11 Then
        .Adjustments.Item(1) = 0
        .Adjustments.Item(2) = 0.75
      Else
        .Adjustments.Item(1) = 0.8
        .Adjustments.Item(2) = 0.5
      End If
    End With
    Set shp2 = shp1.Duplicate
    With shp2
      .Left = shp1.Left - shp1.Width
      .Top = shp1.Top
      .Fill.Visible = False
      .Line.Visible = False
    End With
    Set gShp = .Shapes.Range(Array(shp1.Name, shp2.Name)).Group
  End With
  
  With newChart
    Set oldChart = .Parent.Duplicate.Chart
    oldChart.Parent.Top = .Parent.Top
    oldChart.Parent.Left = .Parent.Left
    .ChartArea.Fill.Visible = False
    .PlotArea.Fill.Visible = False
    .Parent.BringToFront
    For i = 1 To rng.Cells.Count
      gShp.Rotation = rng.Cells(i, 1).Value
      gShp.Copy
      .SeriesCollection(1).Points(i).Paste
    Next
  End With
  gShp.Delete
End Sub

Sub Sample2()
  Dim newChart As Chart
  Dim oldChart As Chart
  Dim shp1 As Shape
  Dim i As Long
  Dim fm
  Dim rng As Range
  Const ms As Long = 5
  Const d As Long = 20
  
  With ActiveSheet
    Set newChart = .ChartObjects(1).Chart
    fm = Split(newChart.SeriesCollection(1).Formula, ",")
    Set rng = Range(fm(2)).Offset(, 1)
    Set shp1 = .Shapes.AddShape(msoShapeRightArrow, 100, 100, d, ms)
  End With
  With shp1
    .Line.Weight = 0.5
    .Line.ForeColor.RGB = vbBlack
    .Fill.ForeColor.RGB = vbBlack
    If Val(Application.Version) > 11 Then
      .Adjustments.Item(1) = 0
      .Adjustments.Item(2) = 0.75
    Else
      .Adjustments.Item(1) = 0.8
      .Adjustments.Item(2) = 0.5
    End If
  End With
  With newChart
    Set oldChart = .Parent.Duplicate.Chart
    oldChart.Parent.Top = .Parent.Top
    oldChart.Parent.Left = .Parent.Left
    .ChartArea.Fill.Visible = False
    .PlotArea.Fill.Visible = False
    .Parent.BringToFront
    For i = 1 To rng.Cells.Count
      shp1.Rotation = rng.Cells(i, 1).Value
      shp1.Copy
      .SeriesCollection(1).Points(i).Paste
    Next
  End With
  shp1.Delete
End Sub

Sub Sample3()
  Dim newChart As Chart
  Dim oldChart As Chart
  Dim shp1 As Shape
  Dim i As Long
  Dim fm
  Dim rng As Range
  Const d As Long = 20
  
  With ActiveSheet
    Set newChart = .ChartObjects(1).Chart
    fm = Split(newChart.SeriesCollection(1).Formula, ",")
    Set rng = Range(fm(2)).Offset(, 1)
    Set shp1 = .Shapes.AddLine(100, 100, 100 + d, 100)
  End With
  With shp1.Line
    .Weight = 0.5
    .ForeColor.RGB = vbBlack
'    .EndArrowheadLength = msoArrowheadShort
'    .EndArrowheadStyle = msoArrowheadTriangle
'    .EndArrowheadWidth = msoArrowheadNarrow
  End With
  With newChart
    Set oldChart = .Parent.Duplicate.Chart
    oldChart.Parent.Top = .Parent.Top
    oldChart.Parent.Left = .Parent.Left
    .ChartArea.Fill.Visible = False
    .PlotArea.Fill.Visible = False
    .Parent.BringToFront
    For i = 1 To rng.Cells.Count
      shp1.Rotation = rng.Cells(i, 1).Value
      shp1.Copy
      .SeriesCollection(1).Points(i).Paste
    Next
  End With
  shp1.Delete
End Sub

【72120】Re:散布図で画像をマーカ-位置に指定した...
発言  kanabun  - 12/5/31(木) 8:45 -

引用なし
パスワード
   ▼あすなろ さん:

>手動操作なら、(1)矢印を適当に描画、(2)角度を変える(図形の回転)、(3)その図形をコピー、
>(4)マーカー1要素だけを選択、(5)貼り付け。(2)〜(5)の操作を要素の数だけ繰り返す。
勉強になります。

>      gShp.Rotation = rng.Cells(i, 1).Value
>      gShp.Copy
>      .SeriesCollection(1).Points(i).Paste
目から鱗、です♪

【72121】Re:散布図で画像をマーカ-位置に指定した...
お礼  マクロはひとまずコピペ  - 12/5/31(木) 17:01 -

引用なし
パスワード
   ハンドルネームを「目指せマクロの達人」から替えました!
あすなろさん、ラベル代用ではなく、マーカーとして角度をつけた画像に置き換えるサンプルのご提示ありがとうございます。 私のEXCELは2010ですが一発で使えました。 オートシェイプに格納してある矢印画像を使って線の色や太さを設定し、それぞれのマーカーに対して画像の設定角度を与える、、、分かりやすいです。 

私の質問へのお答え以上に、新規チャートを作成して透明レイヤーのように重ねる、アプリケーションのバージョン違いにも対応する、などなどきめ細かいプログラム作りのご配慮が伺え、まさにプロの技とお見受けしました。 ここまで高度なプログラムを書かれるにはMS社発行の「開発者のためのVBAレファランスブック」のようなものを熟知してないと、アマチュアがネットや読本で断片的に知るレベルとは段違いであることを、皆様のプログラムを拝見して理解しました。

手持ちの入門書には載っていない表現が多く、どこまで理解できたかは自信ないですが、お三方からいただいた例文をVBA研究の参考保存版として残そうと思います。ありがとうございました。

私の次のステップはデータパラメータを変えて、この絵を毎秒・数こま程度の速度でアニメ化すること、それと欲を言えば画像は標準の矢印ではなくてgifで作った簡単な線画を動かしたいです。 問題が出て、詰まったら改めて別のトピックとしてご相談いたしますので、その際もよろしくご指導ください。

1758 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free