Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel VBA中获取当前单元格周围的相邻单元格值_Excel_Vba_Cell - Fatal编程技术网

在Excel VBA中获取当前单元格周围的相邻单元格值

在Excel VBA中获取当前单元格周围的相邻单元格值,excel,vba,cell,Excel,Vba,Cell,我想用VBA计算相邻单元格的值 很容易获得当前单元格的左侧单元格(例如H19),通常如下所示: =H18 如果我将此单元格复制到其他单元格,则每个单元格都会更改为相应的单元格编号 但是在VBA代码中,我不确定是否正确地获取了左侧单元格的值 Public Function LeftCell() LeftCell = ActiveCell.Offset(0, -1).Value End Function 我不确定这是否正确,我测试了将此单元格复制到其他单元格,但每个结果都不会自动更改 我

我想用VBA计算相邻单元格的值

很容易获得当前单元格的左侧单元格(例如H19),通常如下所示:

=H18
如果我将此单元格复制到其他单元格,则每个单元格都会更改为相应的单元格编号

但是在VBA代码中,我不确定是否正确地获取了左侧单元格的值

Public Function LeftCell()
    LeftCell = ActiveCell.Offset(0, -1).Value
End Function
我不确定这是否正确,我测试了将此单元格复制到其他单元格,但每个结果都不会自动更改

我点击菜单上的各种计算按钮,将计算更改为自动,但没有计算发生

我唯一能做的就是手动选择每个单元格并按enter键

有没有办法计算所有单元格值? 否则,“活动单元格”表示“光标选定的单元格”


提前感谢您的帮助。

Excel VBA中的计算方法可以进行各种计算。您甚至可以定义一个范围,以仅计算特定单元格的范围,如工作表(“Sheet1”)。计算

是,ActiveCell始终是选定的单元格


作为按偏移量设置值的替代方法,您可以使用ActiveCell.FormulaR1C1=“=RC[-1]”

添加@Chris Harper建议的公式,但也可以在单元格中写入公式

而不是ActiveCell,您需要调用公式的单元格

Public Function LeftCell()
    LeftCell = Application.Caller.Offset(, -1).Value
End Function
编辑:如果希望在每次更改值时更新单元格,请将
Application.Volatile True
添加为函数中的第一行


通过拖动公式单元格复制公式时,请记住公式单元格仍然是活动单元格。如果使用Ctrl+C复制公式单元格并将其粘贴到另一个单元格中,它将返回基于活动单元格的正确输出,因为公式粘贴到的单元格将成为下一个活动单元格。函数不应该返回一些内容吗<代码>公共函数LeftCell()As…我花了6个小时找到了解决方案,谢谢!谢谢你的回答。现在我可以将这个公式粘贴到多个单元格!是的,它确实应该有一个显式的变量数据类型来处理数字和文本(在没有变量类型声明的情况下,它无论如何都会这样做——不过,最好的做法是明确说明)。您可以将LeftCell行换行以检查该列,并返回
#REF
如果它是列1,因为它试图从工作表的边缘查看-
如果Application.Caller.column=1,那么:LeftCell=CVErr(xlErrRef):Else:LeftCell=.Caller.Offset(,-1)。值:End if