• 締切済み

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

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答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