VBAの範囲としてセルをポイントしたいと思います。私は使用しようとしました:範囲にVBAポイント変数
Dim range
range = Sheet("sheet").Range("A1")
しかし、これは範囲の値を返します。私が実際に望むのはレンジオブジェクトなので、私はそれを操作することができます。 range.Value = "Hello"を設定することで
アイデア?
VBAの範囲としてセルをポイントしたいと思います。私は使用しようとしました:範囲にVBAポイント変数
Dim range
range = Sheet("sheet").Range("A1")
しかし、これは範囲の値を返します。私が実際に望むのはレンジオブジェクトなので、私はそれを操作することができます。 range.Value = "Hello"を設定することで
アイデア?
まず、コード内の変数の明示的な宣言を必須にすることを強くお勧めします。 ツール - オプション、エディタタブチェック"変数宣言が必要"、またはすべてのスクリプトの最初の行に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
プロパティはありません。
"変数宣言を必要とする"を使用すると、既存のモジュールには遡及的には影響しません.Excelが自動的に*新しい*モジュールの先頭にOption Explicitを配置するかどうかを制御します。したがって、このオプションをオンにしても、既存のモジュールをすべて通過してOption Explicitを追加する必要があります。 –
複数の名前付き範囲がある場合は、「Name1」、「Name2」、「Name3」と呼ぶことができます。次のようにしてそれらにアクセスしたいとします。Set nameRange = range( "Name"&Number) Value <> someValue Then nameRange.Value = someValue - これは失敗です! – Karl