• ベストアンサー

VBAでワークシートとグラフシートの判別

VBAでワークシートがactiveになっている時だけ実行プログラムを書きたいのですが ワークシートとグラフシートの判別する分岐をif文で作成するには どのように書けば良いですか? 検索してみても見つかりませんでした。 どなたかよろしくお願いいたします。

  • KUZUY
  • お礼率19% (60/308)

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

これをグラフシートと、ワークシートで実行してみると Sub test() Debug.Print ActiveSheet.Type, Debug.Print TypeName(ActiveSheet), Debug.Print TypeOf ActiveSheet Is Chart End Sub 'Graphsheet '4, Chart, True 'Worksheet '-4167, Worksheet, False Typeが戻す値が、グラフシートの時、下記の記述や、手持ちのポケットリファレンスの記述と違っているのですが、理由はわかりません。addメソッドの場合とは異なるのでしょうか? http://www.moug.net/tech/exvba/0040048.html いずれにせよこれらで判別できると思います。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。 グラフシートの時、Activesheet.typeはグラフの種類にも影響される様です。棒グラフにすると3を戻したりします。 TypeName(Activesheet)をお使い下さい。

関連するQ&A

  • VBAで各シートの表でグラフを作成したいのですが

    シートごとにレイアウトが同じ表がありまして、 VBAで各シートの表でグラフを作成したいのですが、 どうしても作成した時のシートのデータで出来てしまいます。 egシート1で表作成>シート2でVBA実行してもシート1でつくったグラフが複製されるだけ、、 どうすれば、選択中のシートのデータで表ができるのでしょうか?? 一度グラフをコピーした上でデータを変える方法も試したのですが、 Sub Macro7() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Name = "=Sheet2!$B$29" ActiveChart.SeriesCollection(1).Values = "=Sheet2!$B$31:$B$128" 結局シート2でしか出来ず、、です 「Sheet2!~」のところがいけないのはわかるのですが、、 この方法以外でもどんな方法でもよいのでどなたかお力かしてください。

  • EXCEL VBA バージョンの違いによるエラー

    EXCEL2010でVBAを使用して、グラフを作成するコードを作成したのですがEXCEL2003で使用するとグラフが作成されませんでした。 ネットで調べているとバージョンによって異なる部分があり動作が違う時があると分かりました。 ですが2003でも2010でも使用する場合があるのでどちらかにそろえるということはできません。 どちらでも使用できるようにするにはどうすればよいのでしょうか? 今のファイルとは別に別バージョン用のをもう一つ作成する必要があるのでしょうか? もしくはバージョンを判別してIF文で条件分岐させるなどでしょうか?

  • VBAでワークシートのセルにIF文を入れる

    こんにちは。 VBAでワークシートのセルにIF文を入れ、実行するとエラーがでます。 記述間違いでしょうか? 記述 Worksheets(h.Value).Range("D14").Formula = "=IF(ISERROR(((D5+D6+D7)/D4) = TRUE,"",(D5+D6+D7)/D4)) どこがおかしいのか、どうか教えてください。

  • VBAでのエクセルワークシート作成について

    お世話になります。 VBAで、オープンにしているエクセルファイルで、 シートを検索してシート「TEST」(仮名)が見つからなければ 「TEST」名で新規ワークシートを作成する。 尚且つ、「TEST2」のシート(一番後ろにあるシート)の前に 作成したいのです。 何卒、ご教示下さいます様、宜しくお願いします。

  • VBAのワークシートの追加とコピーなんですが。

    VBAのワークシートの追加とコピーなんですが。 sheet1の原紙をすべてコピーして、 新しくワークシートを追加してそのシートに貼り付けるプログラムを 教えてください。

  • EXCEL2010 VBA グラフの作成

    EXCEL2010のVBAで自動でグラフを作成するコードを作成したいと思っています。 シート1のA1:A10にデータが入っていて、ボタンを押すとコードが実行されて A1:A5までが系列1 A6:A10までが系列2 として表示される折れ線グラフを作成しようと思っています。 さらに作成したグラフは新規にシートを作成して作成したシートに表示させたいと思います。 このような処理を行いたいのですがVBAを始めたばかりなのでグラフの作成くらいしかまだ 分かっていません。 どなたかこの処理を実現できる良い方法を教えてください。よろしくお願いします。

  • VBAで列から数字を判別するには?

    現在プログラムを作成しています。内容はシート1の各列に内容をいれて実行ボタンを押すとシート2のある行にコピーされるというものです。そのシート2にコピーされる場所というのが、A列に数字がランダムにふってありまして、 シート1のA1セルにたとえば『12』と打って、実行ボタンをおしたら、シート2のA列の中から『12』となっているセルを判別してその行に各項目をコピーしたいのです。 なので 今ほどいったようにシート1に『数字』をうって、シート2のA列中から判別するプログラムはどのようにすればいいのでしょうか? 本当に困っています。 おしえてください。おねがいします。

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

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

  • VBAのワークシート削除について

    VBAの初心者です。 VBAでワークシートを削除したいのですが、削除するワークシートがある場合とない場合があります。削除するワークシートがある場合は問題なく削除できますが、 ない場合、『インデックスが有効範囲にありません。』でエラーになってしまいます。(削除するワークシートが無いから当然ですが・・・) このような場合、どのように対処したら良いのでしょうか?

  • EXCEL VBAにてのワークシート作成

    エクセルのVBAにてワークシートを作成することで困っています。 自分で書き込んだのは Private Sub CommandButton1_Click() Worksheets("原紙").Copy ActiveSheet.Name = TextBox1 Worksheets.Add After:=Worksheets(2) End Sub Private Sub UserForm_Initialize() TextBox1 = Format(Date, "yy.mm.dd") End Sub 実行したいことはCommandButton1クリック時に 左から2番目にあるワークシート 原紙を テキストボックス1に入力されている(日付) 名前を付けて左から3番目に新規で作成したいのですが 思うように動かずエラーが出てしまいます。 どの様に修正すれば宜しいでしょうか? またクリック時にすでにテキストボックス1と同じ 名前のワークシートが存在した場合はそのワークシートを Activeにしたいのですがどの様に書き込めば宜しいでしょうか? 重ね重ねですが宜しくお願いいたします。

専門家に質問してみよう