• ベストアンサー

エクセルでグラフ追加について教えてください。

すみませんが、教えてください。 VBAで、エクセルワークブックのシートの最後にグラフを追加しようとしています。 Charts.Add after:=Sheets(Sheets.Count) このコードだとグラフが、最終シートの後ろではなく、前に追加されてしまいます。 どうすれば、シートの後ろに挿入することができるのでしょうか?

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

  • ベストアンサー
  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

こちらエクセル2007ですが、同様の現象確認しました。 おそらくバグでしょう。 で、現状では、以下のようにすれば、最後に追加できます。 -------------------------------------------------------- Public Sub addChart() Charts.Add after:=Worksheets(Worksheets.Count) '最後に移動させる Charts(Charts.Count).Move after:=Worksheets(Worksheets.Count) End Sub --------------------------------------------------------

xyz_1990
質問者

お礼

ご回答ありがとうございます。 バグですか。 教えていただいた方法で対応することにしました。

関連するQ&A

  • Excel VBAの不可解(?)な動作について

    Excel 2000 VBAでの質問です。 Sheet1に以下のようなコードを書きました。 --------------------------------------------------------- Public Sub test() Application.DisplayAlerts = False Sheets("Sheet2").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = "test" Sheets("test").Visible = xlVeryHidden Sheets("Sheet3").Visible = xlVeryHidden Sheets("test").Visible = True Sheets("test").Delete Sheets("Sheet2").Copy After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = "test" '問題の行 Application.DisplayAlerts = True End Sub --------------------------------------------------------- このコードで期待している動作は、最終的にSheet3(xlVeryHiddenになっている)の後ろにSheet2をコピーし、その名前を「test」にするというものです。 しかし、実際にはSheet3の後ろにSheet2がコピーされるものの、名前はSheet2が「test」と変更されてしまいます。 Sheets.Countの値はSheet3をさしているはずなのですが・・・。 皆様に教えていただきたいのは、 ・この意図しない動作がなぜ起こるか ・どうすればこの問題を回避できるか です。よろしくお願いいたします。 もし初歩ミスでしたら、申し訳ありません・・・。ご指摘ください。

  • エクセルVBAでグラフ表示

    エクセル2002使用です。 ユーザーフォームを作り、そこにコマンドボタンを置いています。コマンドボタンをクリックすると、ワークシート上にあるグラフを表示したいのですが・・・ Private Sub CommandButton1_Click() Charts("Graph4").Select Charts("Graph4").Activate End Sub 問題が2つ出てしまいました。 1.ワークブック内でシートは切り替わるのですが、グラフがユーザーフォームの後ろに隠れてしまったままでユーザーフォームの手前に表示できない。 2.グラフ(シート)を表示した後、ユーザーフォームに戻る方法がわからない。 ユーザーフォームからシートにあるグラフを表示させたい場合は、どのような方法がベストなのでしょうか?できれば、ユーザーフォーム上ですべてを行いたいのですが、グラフ作成のコードも新たに作らないと駄目なのでしょうか? 質問の仕方も難しく説明不足かもしれませんが、よろしくお願いします。

  • VB6.0でEXCELにシートを追加したい

    初心者なので、説明がつたないところ、用語の使い方が間違っいるところがあるかと思いますが、今後のためにバシバシ指導お願いします。m(_ _)m VBにてEXCELシートを作成し、それを既存ファイルのシートに追加し、保存したいと考えています。 ・既存ファイルがなけれが新規作成 ・既存ファイルに同名のシートがあれば上書きするか、シ ート名を変更するか聞く 私が考えた流れは、 1.既存ファイルを開く 2.新しいシートを追加する 3.シートの名前をつける 4.既に同名シートがあれば上書きの有無を聞く 5.VBで作ったEXCELシートを既存ファイルのシートにコピー 6.既存ファイルを更新 7.EXCELを閉じる です。 まず、既存シートはコモンダイアログで探し、追加したい既存シートを開くところまではできました。 ただ、 シートを追加しようとすると文字が赤くなって怒られました。 いろいろ調べた結果の文章なので、どうしてここで赤くなるのかが解読できません。 Dim objBook2 As Excel.Workbook Dim objSheet2 As Excel.Worksheet Set objBook2 = objExcel.Workbooks.Open(CDl.FileName) objBook2 .Visible = True Set objSheet2 = objBook2.Worksheets(1) Sheets.Add(after:=Worksheets(Worksheets.Count)) ↑ここでだめでした。 一気にコピーしたほうがいいのかとも思い、下記を記入しましがだめでした。 objSheet.Copy After:=CDl.FileName.Sheets(CDl.FileName.Sheets.Count) 長々とかきましたが、どなたかEXCELシートを追加する記述方法を教えてください。 よろしくお願いします。

  • VBAで教えてください

    お世話になります。 現在、一つのワークブックに複数のワークシートがあり(20枚くらい)、それぞれのシートには、一つづつグラフが挿入されております。 これにVBAで新規シートを追加し、グラフを1枚のシートに並べたく思います。 できれば、縦5列、横4列に並べたいです。 コードを考えたのでですが、うまくいかず、どなたかご教授お願いします

  • エクセルマクロ シートの追加

    マクロでシートを追加し、シートの名前を変更したくて記録したところ、以下のコードになりました。 しかしながら、2度目に実行すると、sheet2が追加されsheet1が無いためエラーとなります。 2度目に実行してもsheet2のシート名を変更できるようにするには、どうすればよいですか? Sheets.Add Sheets("Sheet1").Select Sheets("Sheet1").Name = "処理結果"

  • Excel-VBAで新しいシート挿入直後にシートの名前を変更する。

    お世話になります。 Excel-VBAで、Sheets.Addメソッドで、sheetを挿入すると、都度sheet1とかsheet2とか、何回目のシート挿入を実行したのかによって勝手にsheet番号を振ってワークシートが出来ると思いますが、挿入直後にシートの名前を変更するのはどういうコードを書けば良いのでしょうか?

  • VBA シート名重複した場合削除する

    教えてください。 VBAに関しての質問です。 全くの知識がないので教えていただきたいです。 エクセルワークシートに以下の機能を追加している状態です。 For Each ws In Worksheets If ws.Name = "データ" Then wsChkflg = True End If Next If wsChkflg = True Then ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ" Else ThisWorkbook.Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "データ" End If Set wsNew = ThisWorkbook.Worksheets("データ") 「データ」というシートが作成、追加されるのですが、同じシート名で新規作成した時に エラーが出てしまいます。そのエラーを出さないようにすため、ダイアログ等も出さずに既存のシートを強制的に削除する機能を追加したいのです。 VBAの知識がなくて困っています。 何か良い方法がわかる方いらっしゃいましたらお力を貸してください。 よろしくお願いいたします。

  • グラフを挿入した時実行はどう書く エクセル

    昨日質問したとき、間違ったカテゴリーに書き込みしてしまいました。 削除して再度質問します。 エクセルのグラフに図形(直線や丸)を新規挿入したときに、図形の位置を シートに書き込みたいと思っています。 グラフに図が新規挿入されたときに実行するというvbaのコードは、どのように 書くのでしょうか? よろしくアドバイスお願いいたします。 windows7 excel2010です。

  • コードの一部がよく解かりません。

    下記>部分の使い方がよくわかりませんので教えて下さいませ。 なくても動作しますが、 ありますと ↓ 「実行時エラー'9' インデックスが有効範囲にありません。」 となりますので、>部分も使用して正常に動作するには、どのようにすればよろしいでしょうか? よろしくお願い致します。 ------------------ Sub ワークシートの追加() ' 新規シート1枚を追加 ' Sheets.Add after:=Worksheets(Worksheets.Count), Count:=1 MsgBox "ワークシートの最後の後ろに1枚のシートを追加しました。" > Sheets("ワークシート").Select End Sub ------------------

  • いつもお世話になっております、

    いつもお世話になっております、 必要に迫られてVBAを勉強し始めました。 Sheet1をSheet1の後にコピーして、かつシート名を「発行済」と変更するにはどのようなコードを書けばよいでしょうか? 参考にしているファイルのコードだと末尾にコピーされるので、教えて下さい。 (参考コード) Sheets("Sheet1").Copy After:=Sheets(Sheet1.Count) Sheets(Sheet1.Count).Name = "発行済" また、参考コードのみだと、発行済のシートが1度作成されると、2度目にマクロを実行するとエラーが出てしまうようです。 エラーに対する処理についてのコードの書き方も教えて下さい。