Page 873 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼複数の埋め込みグラフを、1つずつ選択して... ひろさん 03/3/12(水) 17:08 ┗Re:複数の埋め込みグラフを、1つずつ選択... つん 03/3/13(木) 12:10 ┣Re:複数の埋め込みグラフを、1つずつ選択... ひろさん 03/3/13(木) 17:33 ┃ ┗Re:複数の埋め込みグラフを、1つずつ選択... Kein 03/3/13(木) 23:59 ┃ ┗Re:複数の埋め込みグラフを、1つずつ選択... ひろさん 03/3/14(金) 12:02 ┗Re:複数の埋め込みグラフを、1つずつ選択... ひろさん 03/3/14(金) 11:58 ─────────────────────────────────────── ■題名 : 複数の埋め込みグラフを、1つずつ選択して... ■名前 : ひろさん ■日付 : 03/3/12(水) 17:08 -------------------------------------------------------------------------
下記のように任意のシート上に作成した複数の埋め込みグラフのindxを取得し ます。 Dim strObjName() As String Dim intObj As Integer Dim i As Integer 'アクティブシートのChartObjects数をカウント intObj = ActiveSheet.ChartObjects.Count '配列を再宣言 ReDim strObjName(intObj) '配列strObjNameにオブジェクト名を代入 For i = 1 To intObj strObjName(i) = ActiveSheet.ChartObjects (i).Name Next i 上記を利用して、一カ所に固まっているグラフを一つずつ選択して、任意の位 置に移動して並べ替えてやりたいのですが、よい方法が有りませんか?教えて ください。 |
ひろさん さん、こんにちは >上記を利用して、一カ所に固まっているグラフを一つずつ選択して、任意の位 >置に移動して並べ替えてやりたいのですが、よい方法が有りませんか?教えて >ください。 Sub test() Dim strObjName() As String Dim intObj As Integer Dim i As Integer 'アクティブシートのChartObjects数をカウント intObj = ActiveSheet.ChartObjects.Count '配列を再宣言 ''' ReDim strObjName(intObj) ''' '配列strObjNameにオブジェクト名を代入 ''' For i = 1 To intObj ''' strObjName(i) = ActiveSheet.ChartObjects(i).Name ''' Next i For i = 1 To intObj With ActiveSheet.ChartObjects(i) .Left = Cells(i * 6 + 15, 11).Left .Top = Cells(i * 6 + 15, 11).Top End With Next i End Sub 名前で指定しなくても、インデックスで直接ではどうですか? 1つずつ選択して任意の場所・・・というのがよーわかりませんでしたが、 とりあえず、セルに合わせて移動させてみました。(縦並び) たまたまあったグラフがいっぱいあるファイルで試したから、 Cells(i * 6 + 15, 11)・・このへんは、それに合わせてテキトーです。 |
▼つん さん:こんにちは、回答ありがとうございます。 とりあえず、実行しましたが、cellsのところでデバックになります。 また、任意の場所とは、とりあえず同じシート上に3個のグラフを作成すると、画面の中央に重なって表示されます。これを一つ選択して、シートの左上に移動します。 また、次を一個選択して、前のグラフの下方に重なることのないよう、移動します。 最後は、シートの左端に、縦にグラフが重ならないよう並んで表示される状態になります。 □ □(重ならないよう、縦に並ぶ) ←←← □(三個重なっている) □ 小さいですが、上の四角のようにしたいのですが、どうしても巧くいきません。勉強不足です。 また、アドバイス有りましたら、宜しくです! >> > For i = 1 To intObj > With ActiveSheet.ChartObjects(i) > .Left = Cells(i * 6 + 15, 11).Left > .Top = Cells(i * 6 + 15, 11).Top > End With > Next i > >End Sub > >名前で指定しなくても、インデックスで直接ではどうですか? >1つずつ選択して任意の場所・・・というのがよーわかりませんでしたが、 >とりあえず、セルに合わせて移動させてみました。(縦並び) >たまたまあったグラフがいっぱいあるファイルで試したから、 >Cells(i * 6 + 15, 11)・・このへんは、それに合わせてテキトーです。 |
>とりあえず同じシート上に3個のグラフを作成 この作成時点で、任意の位置にもってくれば良いでしょう。それには・・ Sub Test_Ch() Dim i As Integer, j As Integer Dim Tp As Single, Wp As Single, Hp As Single Dim SRng As Variant Dim Ch As ChartObject SRng = Array("B2:E10", "F2:I10", "J2:M10") For i = 1 To 17 Step 8 With Cells(i, 1).Resize(8, 5) Tp = .Top: Wp = .Width: Hp = .Height End With Set Ch = ActiveSheet.ChartObjects.Add(1, Tp, Wp, Hp) Ch.ChartWizard Sorce:=Sheets("Sheet2").Range(SRng(j)) 'その他の引数についてはヘルプを参考に。 j = j + 1: Set Ch = Nothing Next i Erase MyAr End Sub てな感じで A1:E8, A9:E16, A17:E24 のセル範囲に合わせたグラフが出来ると 思います。 |
こんにちは、Kein さん 少し前に、解決しましたが、Keinさんご意見も、今後の参考にさせて頂きます。 貴重な、ご指導ありがとうございました。 又機会が有りましたら、宜しくです! |
こんにちは、つん さん。 非常に助かりました。少し考えまして、何とか近いとこまで出来るようになりました。 これから、改良して自分の理想に近づけます。 ありがとうございました。又、機会が有りましたら、宜しくです! |