いつもお世話になっております。
■状況
添付画像をご覧ください。
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の一部
No.1ベストアンサー
- 回答日時:
一般的なオブジェクトの操作についての回答です。
的はずれでしたらすみません。
プロパティを操作するなら、リストではなく、
.DataLabel.ShowValue (sがいらない)、
または、
.DataLabels(変数).ShowValue
※変数はグラフのシート上の通し番号
で行います。
この行よりも前で、fsc(k)にシート等を適切にsetされているかも気になりました。
https://docs.microsoft.com/ja-jp/office/vba/api/ …
No.3
- 回答日時:
質問のようなプログラムの場合は、最初にHasDataLabelsプロパティを使って
If .HasDataLabels = True Then
.DataLabels.ShowValue = TargLabel(k)
・・・以下の処理・・・
の順に実行するべきです。
DataLabelsメソッド(プロパティではない)は、DataLabelsコレクション(DataLabelオブジェクトのコレクション)を返します。
このメソッドは、HasDataLabelsプロパティ が Trueの時に使用されるべきメソッドなので、HasDataLabelsプロパティを無視して実行した時は、内部でDataLabelsコレクションを作ろうとDataLabelsのCountプロパティを取得しようとした時にエラーが発生したのではないかと思います。
質問のプログラムは正しくない使用法なので、「そういう間違った使用法をすると、そう表示します」と言う仕様だと思います。
No.2
- 回答日時:
まず、質問の処理をする場合は
>.DataLabels.ShowValue = TargLabel(k)
の前にHasDataLabelsプロパティを使って
If .HasDataLabels = True Then
.DataLabels.ShowValue = TargLabel(k)
・・・以下の処理・・・
の順に実行するべきです。
DataLabelsメソッド(プロパティではない)は、DataLabelsコレクション(DataLabelオブジェクトのコレクション)を返します。
このメソッドは、HasDataLabelsプロパティ が Trueの時に使用されるべきメソッドなので、HasDataLabelsプロパティを無視して実行した時は、内部でDataLabelsコレクションを作ろうとDataLabelsのCountプロパティを取得しようとした時にエラーが発生したのではないかと思います。
質問のプログラムが正しい使用法を外れた使用法なので、「そういう間違った使用法をすると、そう表示します」と言う仕様だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) モードレスでユーザーフォームが開け(表示)ません。 4 2022/09/09 11:05
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで、DLLを頂いたんですが...
-
ユーザーフォームのVBAエラー
-
c# ネットワークプログラム
-
FriendとPublicの違い。。。
-
オブジェクト型の変数が定義さ...
-
エディットコントロールでEnter...
-
(UWSC) 「#32770」の意味わかり...
-
C++/CLIからC++の呼び出しで例外
-
【ASP.NET】 独自で作成したク...
-
ダイアログ表示時にチェックボ...
-
CreateObjectとはどういう意味...
-
クラスのアドレスを引数として...
-
CMainFrameクラスの使い方
-
C#のクラス設計について教えて...
-
ボタンのオーナードローについて
-
MFC モードレスDlgについて
-
IncludeではなくClassで宣言す...
-
VC++ リストボックスにデータを...
-
フォーム間でのオブジェクト又...
-
エディットコントロールのイベ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームのVBAエラー
-
VB.NETで、DLLを頂いたんですが...
-
excel vba グラフ データラベル...
-
条件によって別のクラスのイン...
-
C#でVB.NETのReplaceコマンドを...
-
C# フォームのShow()のオーバー...
-
c# Equalsメソッドについて
-
c# ネットワークプログラム
-
C# using の有効範囲
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
イベントにAddHandlerされてい...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
CreateObjectとはどういう意味...
-
(UWSC) 「#32770」の意味わかり...
-
エディットコントロールのイベ...
-
オブジェクト型の変数が定義さ...
-
エディットコントロールでEnter...
-
WindowsAPIのリストビューの...
おすすめ情報