2009-07-16 15 views
0

VBAの範囲としてセルをポイントしたいと思います。私は使用しようとしました:範囲にVBAポイント変数

  Dim range 
     range = Sheet("sheet").Range("A1") 

しかし、これは範囲の値を返します。私が実際に望むのはレンジオブジェクトなので、私はそれを操作することができます。 range.Value = "Hello"を設定することで

アイデア?

答えて

4

まず、コード内の変数の明示的な宣言を必須にすることを強くお勧めします。 ツール - オプションエディタタブチェック"変数宣言が必要"、またはすべてのスクリプトの最初の行にOption Explicitを入力してください。

第2に、コードに小さな誤字があると思います。Sheets.("sheet")である必要があります。

質問に答えるには、range = Sheets("sheet").Range("A1")を使用して、オブジェクトではなく値変数を割り当てます。したがって、範囲オブジェクトのデフォルト変数は暗黙的に割り当てられます。valueです。オブジェクトを割り当てるには、Setキーワードを使用します。私の完全なサンプルコードは次のようになります:

Option Explicit 

Public Sub Test() 
    Dim RangeObject As range 
    Set RangeObject = Sheets("Sheet1").range("A1")  
    RangeObject.Value = "MyTestString" 
End Sub 

これは、テキスト "MyTestString"をセルA1に入れるべきです。

編集:名前付き範囲を使用する場合は、RangeObject.Valueの代わりにRangeObject.Value2を試してください。名前付き範囲にはValueプロパティはありません。

+2

"変数宣言を必要とする"を使用すると、既存のモジュールには遡及的には影響しません.Excelが自動的に*新しい*モジュールの先頭にOption Explicitを配置するかどうかを制御します。したがって、このオプションをオンにしても、既存のモジュールをすべて通過してOption Explicitを追加する必要があります。 –

+0

複数の名前付き範囲がある場合は、「Name1」、「Name2」、「Name3」と呼ぶことができます。次のようにしてそれらにアクセスしたいとします。Set nameRange = range( "Name"&Number) Value <> someValue Then nameRange.Value = someValue - これは失敗です! – Karl