2017-05-25 367 views
0

我想獲取用於在VBA中計算的相鄰單元格值。在Excel中獲取當前單元格周圍的相鄰單元格值VBA

這是很容易得到當前單元格(egH19)的左單元通常是這樣的:

=H18 

如果我複製此細胞與其他細胞,其中的每一個改變爲合適的細胞數目。

但是在VBA代碼中,我不確定我是否有權獲取左側單元格的值。

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

我不知道這是正確的,我測試複製此細胞與其他細胞,但每次的結果不會自動改變。

我點擊菜單上的各種計算按鈕,將計算更改爲自動,但不計算任何計算。

我可以做的唯一方法是手動選擇每個單元格並按下回車鍵。

有什麼方法可以計算所有的單元格值嗎? 否則,「活動單元格」是指「光標選定單元格」?

感謝您的幫助提前。

+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行來檢查列並返回'#REF',如果它是列1,因爲它試圖查看錶單的邊緣 - 如果Application.Caller.Column = 1 Then:LeftCell = CVErr(xlErrRef):否則:LeftCell = .Caller.Offset(, - 1).Value:End If' –

0

在Excel VBA中計算方法做各種計算。您甚至可以定義一個範圍來僅計算特定單元格的範圍,如工作表(「Sheet1」)。

是的,ActiveCell始終是選定的單元格。

作爲替代通過偏移設定值,則可以使用ActiveCell.FormulaR1C1 =「= RC [-1]」

相關問題