それはあなたのコードがデフォルトメンバーに大きく依存しているので、何が起こっているのか伝えるのは難しいです。とにかく:
Dim Th As Long
これは正しいです。
Dim themeColorIndex As MsoThemeColorIndex
これは正しいと明示的な(MSDN上MsoThemeColorIndexを参照)です。
Scott Holtzman saidと指定できる値は、Enum
のいずれかの文字列を連結して正しい値を生成することはできません。文字列ではなく、Enum
の値を使用できます。 ActiveCell
は文字通り何次のようになります。私の推測ではActiveCell.Offset(-5, 0)
を作るために危険な仮定だ1と6の間の数を含まなければならないということです
Th = "msoThemeColorAccent" & ActiveCell.Offset(-5, 0)
:これを行うことによってそのよう
。その値は、特定のセル内にある場合は、そのアドレスによってそれを参照してください。
themeColorIndex = Sheet1.Range("B12").Value
これは少し良いですが、それはまだB12
の値が暗黙のうちにLong
整数に変換することができることを前提としています。
Dim selectedValue As Variant
selectedValue = Sheet1.Range("B12").Value
If Not IsNumeric(selectedValue) Then
MsgBox "Invalid value!"
Exit Sub
End If
If Sheet1.Range("E12").Value <> "Realized" Then Exit Sub
Dim themeColorIndex As MsoThemeColorIndex
themeColorIndex = selectedValue
あなたはmsoThemeColorAccent6
てmsoThemeColorAccent1
で唯一興味があるなら、あなたはB12
が根本的な列挙値、あなたが探しているである値10
て5
を、含まれているしたいと思います。
ワークシートの場合、ユーザビリティ上の理由から、値が6
て1
、その後、あなたがこれを行うことができます許可する必要があります。
Dim themeColorIndex As MsoThemeColorIndex
'msoThemeColorAccent1 underlying value is 5, so we add 4 to the value:
themeColorIndex = selectedValue + 4
次にあなたが別危険な仮定を作っている:あなたは、アクティブなチャートがありますことを前提としてい!チャートはSheet1
に存在し、あなたがより良い、それを参照してくださいしたいと仮定すると、再び、明示的に:
Dim theChart As ChartObject
Set theChart = Sheet1.ChartObjects(1)
With theChart.SeriesCollection(srs) 'whatever srs means
With .Format
.Fill.ForeColor.ObjectThemeColor = themeColorIndex
.Fill.Solid
.Line.ForeColor.ObjectThemeColor = themeColorIndex
End With
End With
「私がここで問題にされると思っています...」あなたのコードでエラーを取得していますか?それとも、あなたが期待しているように働いていないのですか?エラーの場合、どの行でどのようなエラー? – BruceWayne
申し訳ありません - 基本的に変数Thは認識されていません。エラーメッセージは表示されません。それは右のmsothemecolorをピックアップしていません –
'' Long'を削除し、デフォルトで 'Variant'(あるいは' String'を試してください)がどうなるかを見てください。また、オフセットセルが1から6の間であることを確認してください。 – BruceWayne