VBAのみを使用して(ユーザー入力なしで)Excelで縦棒グラフを作成する必要があります。
すべてのラベルの配置が-270度になるように、x軸のラベルをフォーマットしたいと思います。これは、[軸のフォーマット]ダイアログの[配置]タブで[カスタム角度]プロパティを変更することで手動で行うことができます。
マクロを記録しましたが、Excelが位置合わせステップを記録していないようです。
Excel 2007を使用している場合は、2007のマクロレコーダーが少し機能しなくなっているため、以前のバージョンを使用してみてください。
これは私が得たものです:
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlCategory).Select
Selection.TickLabels.Orientation = xlUpward
ActiveChart.Axes(xlCategory).TickLabels.Orientation = 67
.Activateについて
古い学校の VBA マクロは、多くの場合、「アクティブ化」しなければならないと人々に考えさせ、それを「最新」にすることに反対します。グラフィック表現をクリックすると、マウスとキーボードで行うすべての操作が、アクティブ化されたオブジェクトによって受け取られるようになります。Microsoft Office製品の「マクロ ジェネレーター」は、このコーディング スタイルのせいです。
しかし、VBA プログラミングや Office API を使用する世界では、C# やその他の一般的な言語から、それを行うべきではありません。
チャート オブジェクト、線などを変更するには、オブジェクト参照によってオブジェクト自体を操作できます。取得すると、すべてのメソッドとプロパティにアクセスでき、「アクティベーション」は概念の一部ではありません。なんらかの理由で、実際にオブジェクトにフォーカスを与えてユーザーに表示させたい場合 — ビジュアル オブジェクトには通常、呼び出す "Activate()" 関数があります。
この例では、チャート内の複数の系列の線幅が 1 に設定されています。
Sub Change_all_charts()
Dim ch As chart
Dim ws As Worksheet
Dim ChtObj As ChartObject
Dim srs As Series
'Get a reference to the active worksheet
Set ws = ActiveSheet
'Loop each chart object in worksheet ws
For Each ChtObj In ws.ChartObjects
'Operate on 'ChtObj.chart' object using . notation
With ChtObj.chart
Debug.Print "Chart being modified: '" & .Name & "'"
'Loop through all series in the chart .Series collection
For Each srs In .SeriesCollection
Debug.Print " Series being modified: '" & srs.Name & "'"
'Set the series line width
srs.Format.Line.Weight = 1
Next
End With
Next
End Sub
昔(または今でも)、金融関係者は Excel プログラミングを行い、ワークシートを狂ったように点滅させたりアニメーション化したりします。
さて、この 40 年間、私を「悩ませてきた」と言われてきました。