2017-05-25 4 views
0

VBAで計算するために隣接するセルの値を取得します。Excel VBAで現在のセルの周囲に隣接するセルの値を取得する

通常、このような現在のセル(egH19)の左のセルを取得することは簡単です:

=H18 

私は他のセルにこのセルをコピーする場合、それらのそれぞれは、適切な細胞数に変更され。

しかし、VBAコードでは、左のセルの値を取得するのが正しいかどうかはわかりません。私はこれが正しいことを確認していない

Public Function LeftCell() 
    LeftCell = ActiveCell.Offset(0, -1).Value 
End Function 

は、私が他のセルにこのセルをコピーテストしたが、それぞれの結果が自動的に変更されていません。

メニューのすべての種類の計算ボタンをクリックし、計算を自動と変更しましたが、計算は行われません。

私ができる唯一の方法は、手動で各セルを選択してEnterキーを押すことです。

すべてのセル値を計算する方法はありますか? それ以外の場合、「アクティブなセル」とは「選択したセルをカーソルで表示」を意味しますか?

ご協力いただきありがとうございます。

+0

、数式セルがアクティブセルのまま覚えています。数式セルをCtrl + Cキーでコピーして別のセルに貼り付けると、貼り付け先のセルがアクティブセルに基づいて正しい出力を返します。 – sktneer

答えて

3

を使用することができ、その後、先ほどもよいによって設定値に代わるものとして

その数式をセルに書いてください。

ActiveCellではなく、式を呼び出したセルが必要です。

Public Function LeftCell() 
    LeftCell = Application.Caller.Offset(, -1).Value 
End Function 

編集:あなたは値を変更するたびにセルを更新する場合は関数内の最初の行としてApplication.Volatile Trueを追加します。あなたが数式セルをドラッグして数式をコピーするとき

https://msdn.microsoft.com/en-us/library/office/ff193687.aspx

+0

関数は何かを返すべきではありませんか? 'Public Function LeftCell()As ... ' –

+0

私は解決策を見つけるのに6時間かかった、ありがとう!また、他の回答にも感謝します。今、この数式を複数のセルに貼り付けることができます。 –

+0

はい、実際には数値とテキストを扱うためには明示的なVariantデータ型が必要です(変数型宣言なしで実行しますが、それを明確にするのは常に良い方法です)。 LeftCell行をラップして列をチェックし、列1の場合はシートの端を見渡すために '#REF'を返します。If Application.Caller.Column = 1 Then:LeftCell = CVErr(xlErrRef): Else:LeftCell = .Caller.Offset(、 - 1).Value:End If' –

0

Excel VBAでの計算方法は、あらゆる種類の計算を行います。ワークシート( "Sheet1")のような特定のセルの範囲のみを計算する範囲を定義することもできます。

はい、ActiveCellは常に選択されたセルです。オフセット、もし@クリスハーパーがうまくいく通りの式を追加ActiveCell.FormulaR1C1 =「= RC [-1]」

関連する問題