teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

見やすいように改行を入れました。

2018/04/13 09:03

投稿

nge2015
nge2015

スコア7

title CHANGED
@@ -1,1 +1,1 @@
1
- Excelで、既存グラフと同じ書式のグラフをたくさん作りたい。
1
+ Excelで、既存グラフと同じ書式のグラフをたくさん作りたい。
body CHANGED
@@ -8,18 +8,20 @@
8
8
  ```
9
9
  データ系列を変更すると、系列の塗りつぶしの書式が変わってしまいます(Excelのバグ?)。
10
10
 
11
+ そこで、塗りつぶしの書式を取得して、データ系列を変更して、
11
- こで、塗りつぶし書式を取得して、データ系列を変更して、その後、取得した塗りつぶしを再度代入しようとしましたが、塗りつぶしの取得ができません。
12
+ その後、取得した塗りつぶしを再度代入しようとしましたが、塗りつぶしの取得ができません。
12
13
 
13
- ObjectThemeColorが正常に取得できず、0が返ってきてしまうようで、データ系列の変更後に、これを代入しようとしたときにエラーが発生します。
14
+ ObjectThemeColorが正常に取得できず、0が返ってきてしまうようで、
15
+ データ系列の変更後に、これを代入しようとしたときにエラーが発生します。
14
16
  ```
15
17
 
16
18
  ### 該当のソースコード
17
19
 
18
20
  ```Microsoft Excel VBA
19
21
  Private Type ChartFormatType
20
- msoForeColor_ObjectThemeColor As MsoThemeColorIndex
22
+ msoFill_ForeColor_ObjectThemeColor As MsoThemeColorIndex
21
- msoBackColor_ObjectThemeColor As MsoThemeColorIndex
23
+ msoFill_BackColor_ObjectThemeColor As MsoThemeColorIndex
22
- msoPattern As MsoPatternType
24
+ msoFill_Pattern As MsoPatternType
23
25
  End Type
24
26
 
25
27
  Sub SetGraphDataSeries()
@@ -33,18 +35,18 @@
33
35
  Dim lngSeries As Long
34
36
  For lngSeries = 1 To 1 '4
35
37
  ' 書式の取得
36
- With .SeriesCollection(lngSeries).Format.Fill
38
+ With .SeriesCollection(lngSeries).Format
37
- cft.msoForeColor_ObjectThemeColor = .ForeColor.ObjectThemeColor
39
+ cft.msoFill_ForeColor_ObjectThemeColor = .Fill.ForeColor.ObjectThemeColor
38
- cft.msoBackColor_ObjectThemeColor = .BackColor.ObjectThemeColor
40
+ cft.msoFill_BackColor_ObjectThemeColor = .Fill.BackColor.ObjectThemeColor
39
- cft.msoPattern = .Pattern
41
+ cft.msoFill_Pattern = .Fill.Pattern
40
42
  End With
41
43
  ' データ系列の変更
42
44
  .SeriesCollection(1).Values = "='有意差まとめ(2)b'!$B$72:$B$79"
43
45
  ' 書式の再設定
44
- With .SeriesCollection(lngSeries).Format.Fill
46
+ With .SeriesCollection(lngSeries).Format
45
- .ForeColor.ObjectThemeColor = cft.msoForeColor_ObjectThemeColor
47
+ .Fill.ForeColor.ObjectThemeColor = cft.msoFill_ForeColor_ObjectThemeColor
46
- .BackColor.ObjectThemeColor = cft.msoBackColor_ObjectThemeColor
48
+ .Fill.BackColor.ObjectThemeColor = cft.msoFill_BackColor_ObjectThemeColor
47
- .Pattern = cft.msoPattern
49
+ Call .Fill.Patterned(cft.msoFill_Pattern)
48
50
  End With
49
51
  Next
50
52