• ベストアンサー

Excel VBAで、グラフを特定のセルに移動させたい。

VBA初心者です。 エクセルのワークシート上のグラフ(例えば"グラフ1")を、特定のセル(例えばB4)に移動(もしくはカットペースト)させたいのですが、記述方法を教えて頂けないでしょうか。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.3

#2です。 「アクティブなChartObjectsのナンバーを取得する方法」はなかなか複雑になります。。。。 前提として以下のことを知っておいたほうがよいと思うので記入します。 【前提】 グラフには2種類のオブジェクトが存在します。 今回使用した「ChartObject」と「Chart」です。 違いは「埋め込みグラフ専用」か「シート&埋め込み両用」かの違いです。 またそれとは別に現在選択中のグラフを取得する方法として「ActiveChart」がありますが、これは「Chart」を戻り値とします。 以上の前提を踏まえて「アクティブなChartObjectsのナンバーを取得する方法」について記入します。 【取得方法】 Dim i As Long Dim lngGetIndex As Long '初期化 lngGetIndex = -1 '埋め込みグラフを繰り返しチェックし、アクティブグラフかどうかを判別 For i = 1 To ActiveSheet.ChartObjects.Count '同一オブジェクトの場合はインデックスを取得して処理を抜ける If ActiveSheet.ChartObjects(i).Chart Is ActiveChart Then lngGetIndex = i Exit For End If Next 一応以上の方法でアクティブなグラフのインデックスを「lngGetIndex」に取得できます。 (未選択の場合は「-1」が「lngGetIndex」に設定されています)

mumu001
質問者

お礼

度々のお返事ありがとうございます。 非常に丁寧に回答して頂いたおかげで、たいへん勉強になりました。なにぶん初心者なもので、また質問することがあると思いますが、よろしくお願いします。本当にありがとうございました。

その他の回答 (2)

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.2

シート内にグラフが1つしかないなら ActiveSheet.ChartObjects(1).Left = ActiveSheet.Range("B4").Left ActiveSheet.ChartObjects(1).Top = ActiveSheet.Range("B4").Top でできます。 複数ある場合は「ChartObjects(1)」の部分を「ChartObjects(2)」とかにしてやります。

mumu001
質問者

お礼

返事が遅くなって申し訳ありません。 アドバイス通りに記述して、動作することを確認しました。ありがとうございました。 もしお手数でなければ、アクティブなChartObjectsのナンバーを取得する方法を教えていただけないでしょうか?よろしくお願いします。

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.1

これで出来ると思われ Private Sub CommandButton1_Click()      With ChartObjects.Item(1)     .Left = Range("b4").Left     .Top = Range("b4").Top   End With    End Sub

mumu001
質問者

お礼

お返事ありがとうございます。 アドバイス通り試してみたのですがエラー(変数が定義されていません)がでます。 一応、以下の様に記述して目的とする結果が得られたのですが、もっと簡単に記述できないものでしょうか? Dim myChartName myChartName = ActiveChart.Name myChartName = Mid$(myChartName, InStr(myChartName, "グラフ")) ActiveSheet.Shapes(myChartName).Cut Range("B4").Select ActiveSheet.Paste

関連するQ&A

  • Excel VBAでグラフを移動させるマクロを作りたいのですが

    VBA初心者です。 エクセル上で、その時点でアクティブなグラフを移動させたいのですが・・・ Dim myName myName = ActiveChart.Name ActiveSheet.Shapes(myName).IncrementLeft 10.00 これを実行すると「指定した名前のアイテムが見つかりませんでした」と、エラーがでます。 おそらく、Shapes("グラフ 1")としなければならないのに、Shapes("Sheet1 グラフ 1")となっているためと思われますが・・・? このエラーをなくすには、どうすれば良いのでしょうか?よろしくお願いします。

  • 【EXCEL2003】特定の条件を満たすセルを含む行を指定したシートに移動したい

    EXCELのデータ集計で質問です。 データを集計・グラフ化したいのですが、特定の条件を満たすセルを含む行を指定するシートに移動したいと考えているのですが、可能でしょうか。 可能ならば方法を伝授していただきたいと思っています。 データには、列Bに「A」「B」「C」「空白」と4種類を含んでいます。 これらのデータで、セル「A」を含む行のデータのコピーをsheet"Aランクデータ"に自動的に移動するようにしたいのです。 オートフィルタで抽出して、コピー・ペーストを実施しているのですが、これしかないのでしょうか・・・? よろしくお願いします。

  • VBA:特定の場所のセルの値をコピーする方法

    VBA初心者です。ActiveになっているSheetの特定のセルをコピーする場合は、 Range("A1:F100").Copy というふうに記述すればいいとおもうのですが、特定のBookの特定のSheetのセルをコピーしたいときにはどのように記述すればよいのでしょうか。

  • Excel VBAにてシート移動について

    初心者なのでわかりやすくお願いいたします、 Excel でワークシートを次のシート移動したときににマクロの記述にてsheet(1)からsheet(2)に移るときにはこのように数字を書けばよろしいのですが、ある任意のシートから次シートに移動したいときには任意のシート、次のシートはどのように記述すればいいかわかりません、どなたかお教えください  ルークといいます宜しくお願いいたします。

  • エクセルVBA 開始セルに戻る方法

    エクセル2003にて VBA記述の方法で、”実行時に選択されていたシートのセルに戻る”というのはどう記述すればよいのでしょうか??? 現在使用しているVBAは人から教えてもらったもので”アクティブシートから他のシートの情報を検索し、コピーする”というものですが追加で”元のシートに返って情報を貼り付ける”という機能を追加したいです。 わかるかた教えてください。(初心者ですみません)

  • VBAにてセルの値を移動させる方法を教えてください。

    VBAを使用しEXCELのセルの値を移動させたいのですが、たとえば下記のように●と▲で構成された同じワークシート内のセルの集合に対し(1)の集合を(2)の集合を維持したまま(2)に移動させたいのです。      (1)            (2) ABCDEFGHI    JKLMNOPQR 1▲●           ● 2●            ▲● 3▲ ●          ▲▲● 4●●●●         ●● 5▲▲▲●●        ●▲ 6▲●           ●●▲ 移動後     (2)((1)+(2)) JKLMNOPQR 1●▲● 2▲●● 3▲▲●▲● 4●●●●●● 5●▲▲▲▲●● 6●●▲▲● (1)の異動元のB3の空白は移動後には左に詰めるようにし、移動後の内容でセル列Rを越える値は切り捨てるようにもしたいのです。こんな形でのマクロをご教授いただきたいのですが、よろしくお願いいたします。

  • EXCELでアクティブなワークシートのグラフを連続印刷するorPPTに1グラフ/1ページで貼り付ける

    EXCEL2000(windows XP)環境にて、現在アクティブなワークシートにあるグラフ(埋め込みグラフ)を連続印刷する方法を教えてください。 例えば、ワークシート中に50枚のグラフが配置されているとき、これらを全て印刷したいのですが、いちいち印刷メニューからだと手間がかかり、これを何とかできればと考えています。 アクティブなワークシート中の任意の選択されたグラフを印刷できるとナオいいです。 更に、PPT等に1グラフ/1ページで出力(カット&ペースト)をマクロやVBA等で自動できれば最高です。 ここを見れば、にたようなことができるという情報でも歓迎します。 どうぞよろしくお願いいたします。

  • エクセルのVBAで、異なるブック間でのコピー&ペースト

    こんばんは。 エクセルのVBAで、異なるブック間でのコピー&ペーストに関しての質問です。 現在アクティブになっているシートのB4セルをコピーして、 現在開いているシートのブックとは異なる特定の ブック(”Book1")の特定のシート(”Sheet1”)のC5セルに貼り付けたい場合、 ●●●の部分に何と表現すればよいか教えてください。 Range("B4").Copy Destination:=●●● よろしくお願いいたします。

  • 《エクセル2000》そのセルがグラフに使われているかを探せますか?

    任意のセルが、グラフに使用されているか否かが知りたいです。 グラフをクリックすると使用しているセルがわかる場合がありますが、「ワークシート分析」の「参照先」のように、セルから逆にたどる方法はあるでしょうか。 よろしくお願いします。

  • エクセルマクロ VBAで順次下セルからコピペする方法

    VBA初心者です。教えてください。 同一bookに"sheet1"と"sheet2"があります。 "sheet1"セルA1のデータ(数字or文字)をコピーして"sheet2"セルA1にペースト。 次に "sheet1"セルA2のデータ(数字or文字)をコピーして"sheet2"セルA2にペースト。 "sheet1"セルA3のデータ(数字or文字)をコピーして"sheet2"セルA3にペースト。 ↓ セルAxにデータがあれば、繰り返し。 ↓ "sheet1"セルAxが空欄になったら終了。 このような処理は、どう記述したらよいのでしょうか? お願いします。教えてください^^;

専門家に質問してみよう