

エクセル棒グラフの例：棒を網掛の表示にしてマクロ記録すると等号無しの例外的な記述になっているようです。（.Fill属性の表現の混在）

[code]

    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.RGB = RGB(112, 48, 160)
        .Transparency = 0
        .Patterned msoPattern25Percent
    End With
    
[/code]

VBAで値を取得・設定するためにはコード中で等号を使うためエラーになります。  
解決策をご教示いただけないでしょうか。


CC BY-SA 4.0
2019-11-07T12:07:31.900
60331
2019-11-07T23:30:26.507
2019-11-07T12:14:11.767
3060
36527
question
vba
等号を使わないプロパティ値の設定と取得


**Patterned** はプロパティではなくメソッドです。  
プロパティの方は **Pattern** で二文字短いですね。  
どうも設定はメソッド、取得はプロパティのようです。

[FillFormat オブジェクト (Excel)](https://docs.microsoft.com/ja-
jp/office/vba/api/excel.fillformat)

> **メソッド**
>
>   * Patterned
>

>
> **プロパティ**
>
>   * Pattern
>

ちなみに構文部分は機械翻訳だけではなく原文もちょっと不思議な？内容になっています。  
コピペして混じってしまったのでしょうか？  
[FillFormat.Patterned method (Excel)](https://docs.microsoft.com/ja-
jp/office/vba/api/excel.fillformat.patterned)

> 指定した塗りつぶしのパターンを設定します。  
>  構文  
>  式。パターン化(パターン)  
>  **expression A variable that represents a FillFormat object.** 原文  
>  式FillFormat オブジェクトを表す変数を取得します。 訳  
>  パラメーター  
>  名前 必須 / オプション データ型 説明  
>  Pattern 必須 MsoPatternType パターンの種類を指定します。

[FillFormat.Pattern property (Excel)](https://docs.microsoft.com/ja-
jp/office/vba/api/excel.fillformat.pattern)

> 塗りつぶしのパターンを表す **msopatterntype クラス** 値を設定または返します。  
>  構文  
>  式。パターン  
>  **expression A variable that represents a FillFormat object.**  
>  式FillFormat オブジェクトを表す変数を取得します。  
>  注釈  
>  **塗りつぶし**** のパターンの種類を設定するのにには、パターン化メソッドを使用します。**

* * *

メソッドのパラメータとプロパティの値の説明が同じ文言になっているのが **「不思議な」** と書いた根拠です。  
今まで厳密に細かい文言を見較べたことは無いので、MSではこれが普通なのかもしれませんが。

そしてメソッドである **Patterned** に対して`=`を使った取得・設定を行っても、それは両方エラーになるでしょう。( **式**
とあるので取得は出来るのかも？)  
`=`を使って取得・設定を行うなら **Pattern**
プロパティを使わなければならないはずです。しかし注釈に「設定にはメソッドを使う」とあるので、仮に`Pattern =
xxxx`で設定できたとしても、そうではなくてメソッドを使いましょう、ということだと思います。

とここまで書いてきてナンですが、どちらも使ったことは無いので、用語の仕様を基にした概念的な説明です。

提示されたコードは動くと思われます。  
質問者さんは、`Patterned`がプロパティだと誤解して、設定・取得に `=` が使われていないのを疑問に思って `.Patterned =
msoPattern25Percent` に書き換えようとしてエラーになった(さらに `xxxx = .Patterned`
として取得を試してもエラーになった？)ので、この質問になったのではないでしょうか。


CC BY-SA 4.0
2019-11-07T17:24:48.393
60338
2019-11-07T23:30:26.507
2019-11-07T23:30:26.507
26370
26370
60331
answer