• 締切済み

Excel VBA で[軸のオプション]表示

Excel2016にて、グラフの軸の最大値、最小値を頻繁に調整する必要があるため、[軸を選択して右クリック、軸の書式設定]で表示される軸の書式設定のパネル(右側に表示されるウィンドウ)をボタン一つで表示できるようにしたいのですが、うまくいきません。 オートマクロで作成すると、下記のような感じで一応は表示されるのですが… 例) x軸の軸のオプション表示の場合 ActiveSheet.ChartObjects("選択したグラフ名").Activate ActiveChart.Axes(xlCategory).Select Application.CommandBars("Format Object").Visible = True この場合、問題が2つあり 1.Excelを起動した直後(軸の書式設定パネルを一度も表示していない)場合にはエラーが発生して表示できない。 2.パネルの項目が、塗りつぶしや、配置などになっていると、軸のオプションに切り替わらない。 という現象が起きてしまいます。一度手動で軸のオプションを表示した後は、有効になります。 これでは微妙に使えないので、ダイレクトに表示する方法が知りたいのですが、見つけることができませんでした。 どなたかわかる方がいらっしゃいましたらよろしくお願いします。 P.S  VBAでダイヤログを作成して直接入力という方法もあるのかもしれませんが、スケールを部分的に拡大したりの調整なので、軸のオプションの方が使い勝手が良いように思います。 以上、よろしくお願いします。

  • ZC33A
  • お礼率100% (1/1)

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

質問の主旨に合うかわかりませんが、取り合えず、下記の通りに、やってみて 、修正で、使えるかどうか考えてみてください。 === 利用シートは Sheet1 1つ。 データ例 A2:B8 を作る。 日付   生産量 2019/12/1 34 2019/12/2 25 2019/12/3 37 2019/12/4 45 2019/12/5 26 2019/12/6 28 を用意する。 普通は、まず折れ線グラフか棒グラフを作成しておく。 無い場合はVBAがグラフを作成するが。 2つ以上のグラフは、同時にはこのシートでは作らないものとする。 ’---- Sheet1にコマンドボタン1つ貼り付け 開発ー挿入ーActivexコントロール  ActiveXのコマンドボタンをクリックして  シートに貼りつけ そのシートのコマンドボタンをダブルクリック Private Sub CommandButton1_Click() End Sub   が出る そのシートのコマンドボタンをダブルクリック PrivateとEnd その間に下記を作成 ’--シートのコマンドボタンのクリック Private Sub CommandButton1_Click() MsgBox ActiveSheet.ChartObjects.Count If ActiveSheet.ChartObjects.Count = 0 Then MsgBox "アクティブシートに埋め込みグラフはありません。" '--グラフ作成 graphAdd Else '---- UserForm1.Show ActiveSheet.ChartObjects(1).Activate End If End Sub ’-- 標準モジュールに Sub graphAdd() With ActiveSheet.Shapes.AddChart.Chart '棒グラフ追加 -->種類は適宜修正 .ChartType = xlColumnClustered .SetSourceData Range("A1:B8") End With End Sub ーーー 次にUserFormの作成 開発ーVisualBasic-挿入ーユーザーフォーム ユーザーフォームの画面にテキストボックス2つとコマンドボタン1   貼り付ける コマンドボタンをダブルクリック Private Sub CommandButton1_Click() End Sub が出る。 そこで下記を作る。 Private Sub CommandButton1_Click() ActiveSheet.ChartObjects(1).Activate If UserForm1.TextBox1.Value = "" Then MsgBox "数値を指定のこと" Exit Sub End If '--- If UserForm1.TextBox2.Value = "" Then MsgBox "数値を指定のこと" Exit Sub End If '--- ActiveChart.PlotArea.Select ActiveChart.Axes(xlValue).Select ActiveChart.ChartArea.Select ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).MinimumScale = UserForm1.TextBox1.Value ActiveChart.Axes(xlValue).MaximumScale = UserForm1.TextBox2.Value End Sub (注) 質問のActiveSheet.ChartObjects("グラフ 1").Activate の行について 問題はシートに「グラフ1」が表示されておればよいが 、 表示されていない段階でこれが実行されるとエラーとなろう。 == 操作 Sheet1で コマンドボタンをクリック。 ーー ユーザーフォームが現れる。 下限値と上限値をそれぞれのテキストボックスに入力する。 そして、コマンドボタンをクリック。指定した値に目盛がグラフが変化。 フォームの、右上Xでユーザーフォームを閉じる。 == 各コントロールの見出し的ラベルは今回は省略。本来加えてください。 === 相当解説も複雑・長く面倒で、VBA回答の常連さんからの回答が、早々と出ないのもそのためかと思った。

ZC33A
質問者

お礼

imogasi様 大変お手数をおかけしました。 単純に書式のパネル表示は出来ないみたいですね。 クイックアクセスツールバーにもボタンがあるんですがね… 古いexcelは目盛部をダブルクリックで簡単にダイヤログを表示出来たので、今の形式になっ手イライラしてしまって… imogasi様のやり方は、ちょっと試そうとしたのですが、トラブってます(汗 後ほどじっくりと取り組んでみます。 ありがとうございました。

関連するQ&A

  • Excelグラフでの軸の表示方式変更方法

    Excelにてグラフをマクロで作成しており、X軸のデータが、0.23025,0.350075,0.04439・・・とあるのですが、 表示上、このX軸のデータを少数点以下2桁までのデータで表示したく(0.25,0.35,0.45というように) マクロの記憶にて、表示形式を変更した操作を記憶させたのですが、記録させたマクロを実行させると  "オブジェクトは、このプロパティまたはメソッドをサポートしていません。"でます。 ちなみに記録させたマクロは以下の通りで、   ActiveSheet.ChartObjects("グラフ 783").Activate ActiveChart.Axes(xlCategory).Select Selection.TickLabels.NumberFormatLocal = "0.00_ "  TickLabels.NumberFormatLocalのところがサポートされていないと表示されます。 Excel97で行ってるのですが、他にマクロで表示形式を変更する方法はあるのでしょうか?

  • excel の chart で軸の数値をクリアしてしまいました

    excel の chart で軸の数値をクリアしてしまいました 軸のところにマウスを持ってきても、軸の数値を再表示する方法がわかりません excel の vba で ActiveChart.Axes(xlCategory).Visible= True のような方法でも構いませんので 軸の数値を再表示する方法を教えてください

  • Excelのグラフで軸表示がおかしくなります。

    Excelのグラフで横軸に日付を設定して、作成しました。いらない日付まで表示されたので、グラフオプションの書式設定で、軸のオプション-軸の種類-テキストを選んだところ、日付はきちんと表示されたのですが、縦軸の項目名がグラフの右に移ってしまい、グラフと重なってしまいました。縦軸は左に表示すると選択してありました。どうやって左へ戻すかがわかりません。宜しくお願いします。 Excel2007を使っています。

  • エクセル グラフ データラベルにX軸の値を表示

    VBAでエクセルのグラフにX軸の値を表示させる方法を教えて下さい。 このように書いているのですが、Type:=xlCategoryでエラーとなってしまいます。 For i = 1 To ActiveChart.SeriesCollection(1).Points.Count ActiveChart.SeriesCollection(1).Points(i).HasDataLabel = True ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlCategory Next i Y軸を表示させるxlValueではエラーとならず、Y軸の値が表示されました。 教えて下さい。 宜しくお願い致します。

  • Excelで、VBAを用いてのグラフ作成。1日ごとの範囲でグラフシート

    Excelで、VBAを用いてのグラフ作成。1日ごとの範囲でグラフシートを作成。それぞれのグラフのX軸の範囲を、グラフタイトル名とグラフシート名に設定したい。(使用環境 : Excel 2004 Mac 日本語版) Excel VBAに関して質問します。グラフの元になる「表1」シートには、次のように1分間隔でデータが入力されています。 #######ここから####### 日時 系列A 系列B 2010/3/1 12:00 0 5 2010/3/1 12:01 1 2 2010/3/1 12:02 1 5 2010/3/1 12:03 5 5 (中略) 2010/3/31 11:57 2 1 2010/3/31 11:58 5 1 2010/3/31 11:59 3 1 2010/3/31 12:00 5 100 #######ここまで####### この表を、2010年3月1日から2010年3月31日までの、1日ごとのグラフにしようと思います。 私は初め、「日時」セルから、最後の「100」セルまでを選択し、グラフウィザードからグラフシートを作成しました。このグラフシートを、すべてのグラフシートの大本になるグラフシートとして、「おおもと」と名付けました。 そうして次のVBAプログラムを書きました。 #######ここから####### Option Explicit Sub Macro1() ' ' Macro1 Macro '3月1日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/1 12:00# .MaximumScale = #2010/3/2 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect '3月2日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/2 12:00# .MaximumScale = #2010/3/3 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect (中略) '3月30日分 Sheets("おおもと").Select Sheets("おおもと").Copy Before:=Sheets(1) ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = #2010/3/30 12:00# .MaximumScale = #2010/3/31 12:00# .MinorUnit = 0.0416666667 .MajorUnit = 0.125 End With ActiveChart.Deselect End Sub #######ここまで####### 上記のVBAプログラムを実行し、一応グラフは描けたのですが、作成したそれぞれのグラフシートのシート名とグラフタイトル名が、それぞれのグラフの日時の範囲を反映したものとなっておらず、一見してどの日時範囲をグラフ化したものか読み取れず、難儀しています。 そこで、3月1日分から3月30日分までのグラフシートとグラフタイトル名を、それぞれの日付の範囲に即した物(たとえば3月1日分のグラフシートは、グラフシート名が「3月1日」、グラフタイトル名が「3月1日」)になる、VBAの書き方を教えて貰えないでしょうか。 長々とした質問ですが、どうぞ、よろしくお願いします。

  • Excelでのグラフ作成用マクロについて。

    「新しいマクロを記録する」でグラフ作成用のマクロを作りました。 内容は、 1.sheet1のBC列を散布図でsheet2に出力。(4つほど別々のグラフを作成) 2.プロットエリアの拡大 3.図の位置調整・図の大きさ調整。(4つが重ならないように) というものです。 一応出来たのですが、何故か選択列を変更して(マクロ内の列選択を変更)出力・プロットエリア拡大までは出来るのですが、3が出来ません。 それで、分からないなりにマクロ内を覗いてみたところ、図の位置を調整する際に、対象となる図が ActiveSheet.Shapes("グラフ 17").IncrementLeft -177.75 などと言うように、グラフ17を参照してしまっているためにうまく動かないのだと思いました。 (そもそも、名前なんて付けていないはず・・・と思って調べていたら、どうやら「グラフウインドウ」で見ることが出来る名前を参照しているようでした。) いっそのこと、グラフをクリック・ドラッグで移動させるのではなく、出力する際に整然と並ぶように設定したいです。どうすればよいでしょう? 一応、作成したものを載せておきます。 ・1~2 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "mass" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "counts" End With ActiveChart.HasLegend = False ActiveChart.PlotArea.Select With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With Selection.Top = 1 Selection.Width = 323 Selection.Height = 180 Selection.Left = 15 Selection.Width = 334 Selection.Height = 194 ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = 0 .MaximumScale = 50 .MinorUnitIsAuto = True .MajorUnit = 5 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub 3. ActiveSheet.Shapes("グラフ 17").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 17").IncrementTop -105.75 End Sub

  • Excelでのグラフ作成用マクロについて

    Excelで、グラフ作成をするマクロを作りました。 sheet1のBC列選択→sheet2に出力→プロットエリア拡大まではうまくいったのですが、肝心の「図の位置調整・サイズ調整」が出来ませんでした。 中身を見たところ、「グラフ12」とかいう名前が勝手についていたらしく、何回やってもその名前を変更することが出来ませんでした。 参照する列を変更してグラフを作成しようとすると、次のグラフが「グラフ13」となってしまい、図の位置調整のところでエラーになります。 マクロは次のようなものなのですが、どうすれば「グラフ12」ではなく、「先ほど作ったばかりのグラフ」を参照してくれるのでしょうか? グラフ12という部分に任意の名前さえつけられれば、何とかなりそうなのですが・・・ グラフ12というものは、「グラフウインドウ」で見られるもののようです。 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With ActiveSheet.Shapes("グラフ 12").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 12").IncrementTop -105.75 ActiveSheet.Shapes("グラフ 12").ScaleWidth 1.48, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 12").ScaleHeight 1.21, msoFalse, msoScaleFromTopLeft ActiveChart.Axes(xlCategory).Select ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.PlotArea.Select Selection.Top = 1 Selection.Width = 526 Selection.Height = 242 End Sub

  • EXCEL VBA:埋め込みグラフオブジェクトの命名方法について (続き1)

    http://oshiete1.goo.ne.jp/qa3258443.html の質問の続きです。 ------------------------------------------------------------- Sub sample() Dim myRange As Range Set myRange = Range("A1:D2") With Worksheets("Sheet1").ChartObjects.Add(50, 50, 300, 200).Chart .ChartType = xlPie .SetSourceData Source:=myRange, PlotBy:=xlRows .ApplyDataLabels Type:=xlDataLabelsShowLabelAndPercent, LegendKey:=False, HasLeaderLines:=True End With End Sub ------------------------------------------------------------- この手法でグラフ作成した場合について、 1. グラフ作成時に以下と同じように NumberFormatLocal を設定する方法はありますか? (通常の記述例) ActiveChart.SeriesCollection(1).DataLabels.Select Selection.NumberFormatLocal = "0.0%" といいますのは、現在作成しているマクロはユーザーの操作によっては 円グラフと棒グラフが順不同に作成される場合があり、 SeriesCollection の INDEX番号 が分からない場合があるためです。 または、グラフの名前等を指定することなどにより、 SeriesCollection の INDEX番号 を取得する事が可能でしたら その方法を教えて頂きたいのですが・・・。 2. 同じく、グラフ作成時にデータラベルのフォントを設定する方法はありますか? (通常の記述例) With Selection.Font .Name = "MS Pゴシック" .Size = 10 End With 3. 同じく、横棒グラフ作成時に、以下と同じ事はできますか? '反転 ActiveChart.Axes(xlCategory).Crosses = xlMaximum ActiveChart.Axes(xlCategory).ReversePlotOrder = True '横軸100% ActiveChart.Axes(xlValue).MaximumScale = 1 以上、何卒ご教授のほど、よろしくお願い致します。

  • AccessからEXCELのグラフの操作をしたい

    AccessからExcelのシートのデータを参照して EXCELのグラフを操作しています グラフのテキストに任意の文字を入れたいのですが msoTextOrientationHorizontal で(定数が定義されていません) とコンパイルエラーになってしまいます これを回避する方法がありましたらご教授ください 初めてグラフを操作するので困っています         '// グラフのデータを設定    ActiveChart.SetSourceData Source:=Sheets("DATA").Range("B1:B7,D1:D7") '// グラフテキスト ActiveChart.ChartTitle.Text = "テスト" ' /// X数値軸ラベル" ActiveChart.Axes(xlCategory).AxisTitle.Text = "X数値軸ラベル" '/// Y数値軸ラベル ActiveChart.Axes(xlValue).AxisTitle.Text = "Y数値軸ラベル" ' '//グラフ内にテキストボックスの埋め込み With ActiveChart With .Shapes.AddTextbox(msoTextOrientationHorizontal, 13, 10, 70, 50) .TextFrame.Characters.Text = "へのへのもへじ End With End With

  • エクセルグラフの軸ラベルを一括変換出来なくて困っています。

    お世話になります。 初めて投稿いたします。 VBA初心者です。エクセルグラフの軸ラベルを一括変換したいのですが、分からなくて困っています。 過去ログ、個人HPなどを参考にして、一つのグラフを選択、下記マクロを実行すれば、一つのグラフのみなら軸ラベルを変更する事が出来たのですが、ワークシート内の複数の埋め込みグラフを一発でラベル変更する場合のマクロが作成できません。 当方会社員、データをまとめる為、今回100ヶほどのグラフを一括変換したいため、どうしてもマクロ処理したいと考えています。 For Each・・・Next でループさせたいのですが、何分初心者勉強中の為、エラー多発、何方かお分かりの方、お助け下さい。 Sub 軸ラベル一括変換() With ActiveChart With .Axes(xlCategory, xlPrimary) .HasTitle = True .AxisTitle.Text = "X" End With With .Axes(xlValue, xlPrimary) .HasTitle = True .AxisTitle.Text = "y" End With End With End Sub

専門家に質問してみよう