2016-12-20 16 views
1

図を動的に作成して、問題が発生しました。セルからオブジェクトメンバを取得する

通常(静的)私は

Selection.Position = xlLabelPositionBelow

、すべての作品を使用します。今、私は

Selection.Position =範囲( "H18")のように、細胞からメンバーを取得したい。私はH18にxlLabelPostionBelowを書かれている

値2

しかし、今私はRuntimeError: 438: Object does not support the Methodを取得します。

私はちょうど何をすべきかわかりません。私の推測では、 "xlLabelPostionBelow"を文字列として使用することはできませんでしたが、別のタイプであるかどうかはわかりません。

+0

xlLabelPostionBelowは数ではない文字列を表したシンボルです。奇妙なことに、そのシンボルは、私のオブジェクトブラウザで見つけることができません。ああ、あなたはタイプミスがあります!! –

+0

どのような数字がどのようなポジションを表しているかご存知ですか? msdnを確認できません。https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xldatalabelposition.aspx – ruedi

+0

上記の記号のスペルを確認してください。 xlLabelPositionBelow対xlLabelPostionBelow、あなたは私を落とした。そして、正しいシンボルが1に解決されます。 –

答えて

0

私はあなたのコメントにコメントしたとは思わない。シートにいくつかの値を入れて、コードに影響を与えたいとします。

OK、1は定数だけでなく、範囲の名前を使用することができますので、私たちは、定数を定義し、それを参照することができ、後

Option Explicit 

Sub DefineMySymbol_RunOnce() 
    Sheet1.Names.Add "xlLabelPositionBelow", 1 
    Sheet1.Range("H18").Value2 = "xlLabelPositionBelow" '* this is just a string 


End Sub 

Sub UsingValueFromSheet() 

    '* here we will pull out the constant (1) and cast to a variable 
    Dim eDataLabelPosition As Excel.XlDataLabelPosition 
    eDataLabelPosition = CLng(Split(Sheet1.Names.Item(Sheet1.Range("H18").Value2).RefersTo, "=")(1)) 

    '* eDataLabelPosition should now appear in Locals Window as xlLabelPositionBelow 
    Stop 

    '* and now you can set you Position 
    'Selection.Position = eDataLabelPosition 

End Sub 
関連する問題