こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

Excel2016にて、グラフの軸の最大値、最小値を頻繁に調整する必要があるため、[軸を選択して右クリック、軸の書式設定]で表示される軸の書式設定のパネル(右側に表示されるウィンドウ)をボタン一つで表示できるようにしたいのですが、うまくいきません。
オートマクロで作成すると、下記のような感じで一応は表示されるのですが…

例) x軸の軸のオプション表示の場合

ActiveSheet.ChartObjects("選択したグラフ名").Activate
ActiveChart.Axes(xlCategory).Select
Application.CommandBars("Format Object").Visible = True

この場合、問題が2つあり
1.Excelを起動した直後(軸の書式設定パネルを一度も表示していない)場合にはエラーが発生して表示できない。
2.パネルの項目が、塗りつぶしや、配置などになっていると、軸のオプションに切り替わらない。

という現象が起きてしまいます。一度手動で軸のオプションを表示した後は、有効になります。
これでは微妙に使えないので、ダイレクトに表示する方法が知りたいのですが、見つけることができませんでした。
どなたかわかる方がいらっしゃいましたらよろしくお願いします。

P.S
 VBAでダイヤログを作成して直接入力という方法もあるのかもしれませんが、スケールを部分的に拡大したりの調整なので、軸のオプションの方が使い勝手が良いように思います。

以上、よろしくお願いします。

投稿日時 - 2019-12-06 13:42:49

QNo.9686936

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

質問の主旨に合うかわかりませんが、取り合えず、下記の通りに、やってみて
、修正で、使えるかどうか考えてみてください。
===
利用シートは Sheet1 1つ。
データ例 A2:B8 を作る。
日付  生産量
2019/12/134
2019/12/225
2019/12/337
2019/12/445
2019/12/526
2019/12/628
を用意する。
普通は、まず折れ線グラフか棒グラフを作成しておく。
無い場合は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回答の常連さんからの回答が、早々と出ないのもそのためかと思った。

投稿日時 - 2019-12-06 20:53:09

お礼

imogasi様

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

ありがとうございました。

投稿日時 - 2019-12-15 23:00:26

あなたにオススメの質問