アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。


■状況
添付画像をご覧ください。

 Dim sc As SeriesCollection
 Dim fsc As FullSeriesCollection
 Dim TargLabel() As Boolean
 Dim TargLabelFormat() As String

です。

やろうとしてるのはグラフの「データラベル」があり(True)の場合そのラベルに書式を適用するマクロです。


■質問
上記やろうとしてることをできるようにすることもそうですが、マクロ記述は、

.DataLabels.ShowValue = TargLabel(k)

であるのに、なぜエラーで「DataLabels クラスの Count プロパティを取得」という関係のないプロパティが登場しているのでしょうか。
エクセルのVBAのバグなのか既述に原因があるのか不明です。

※ちなみに、グラフを別のグラフに書式コピーする際、元グラフにデータラベルがあると書式貼り付けしたときにエクセルが落ちてしまいます。
もしかしたらラベル関係にバグがあるのでないかと踏んでいます。

■動作環境
OS 名:Microsoft Windows 10 Pro
OS バージョン:10.0.16299 N/A ビルド 16299
OS 製造元:Microsoft Corporation
プロセッサ:Intel64 Family 6 Model 42 Stepping 7 GenuineIntel ~2400 Mhz
BIOS バージョン:TOSHIBA Version 2.20 , 2012/06/22
物理メモリの合計:3,988 MB
Excel バージョン:14.0.7192.5000(32ビット) Microsoft Office Standard 2010の一部

「excel vba グラフ データラベル」の質問画像

A 回答 (4件)

一般的なオブジェクトの操作についての回答です。


的はずれでしたらすみません。

プロパティを操作するなら、リストではなく、
.DataLabel.ShowValue (sがいらない)、
または、
.DataLabels(変数).ShowValue
※変数はグラフのシート上の通し番号
で行います。

この行よりも前で、fsc(k)にシート等を適切にsetされているかも気になりました。


https://docs.microsoft.com/ja-jp/office/vba/api/ …
    • good
    • 0

すみません。


間違って2度投稿してしまいました。
    • good
    • 0

質問のようなプログラムの場合は、最初にHasDataLabelsプロパティを使って



If .HasDataLabels = True Then
.DataLabels.ShowValue = TargLabel(k)
・・・以下の処理・・・

の順に実行するべきです。
DataLabelsメソッド(プロパティではない)は、DataLabelsコレクション(DataLabelオブジェクトのコレクション)を返します。
このメソッドは、HasDataLabelsプロパティ が Trueの時に使用されるべきメソッドなので、HasDataLabelsプロパティを無視して実行した時は、内部でDataLabelsコレクションを作ろうとDataLabelsのCountプロパティを取得しようとした時にエラーが発生したのではないかと思います。
質問のプログラムは正しくない使用法なので、「そういう間違った使用法をすると、そう表示します」と言う仕様だと思います。
    • good
    • 0

まず、質問の処理をする場合は



>.DataLabels.ShowValue = TargLabel(k)

の前にHasDataLabelsプロパティを使って

If .HasDataLabels = True Then
.DataLabels.ShowValue = TargLabel(k)
・・・以下の処理・・・

の順に実行するべきです。
DataLabelsメソッド(プロパティではない)は、DataLabelsコレクション(DataLabelオブジェクトのコレクション)を返します。
このメソッドは、HasDataLabelsプロパティ が Trueの時に使用されるべきメソッドなので、HasDataLabelsプロパティを無視して実行した時は、内部でDataLabelsコレクションを作ろうとDataLabelsのCountプロパティを取得しようとした時にエラーが発生したのではないかと思います。
質問のプログラムが正しい使用法を外れた使用法なので、「そういう間違った使用法をすると、そう表示します」と言う仕様だと思います。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!