2017-05-25 595 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]”

相关问题