Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
Arrays 发送密钥以更新数组中引用的单元格_Arrays_Excel_Vba_Macos_Reference - Fatal编程技术网

Arrays 发送密钥以更新数组中引用的单元格

Arrays 发送密钥以更新数组中引用的单元格,arrays,excel,vba,macos,reference,Arrays,Excel,Vba,Macos,Reference,我在一些单元格中有一个硬编码公式,只有在单元格中按enter键时才会更新 我希望此宏“单击单元格并按enter键”更新值并使公式返回值 我有两个宏,一个用于更新一个特定的单元格,另一个用于更新单元格引用数组。出于某种原因,只有单单元格宏起作用。有人知道为什么吗?我希望这可能用于多个工作表和多个行/列 一个单元: Private Sub One_Cell_Click() Range("$D$3").Select Application.SendKeys "{F2}" Application.Se

我在一些单元格中有一个硬编码公式,只有在单元格中按enter键时才会更新

我希望此宏“单击单元格并按enter键”更新值并使公式返回值

我有两个宏,一个用于更新一个特定的单元格,另一个用于更新单元格引用数组。出于某种原因,只有单单元格宏起作用。有人知道为什么吗?我希望这可能用于多个工作表和多个行/列

一个单元:

Private Sub One_Cell_Click()

Range("$D$3").Select
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"

End Sub
多细胞

Private Sub All_Cells_Click()
Dim cellUpdates(0 To 3) As Variant
Dim cell As Variant

cellUpdates(0) = "$D$3"
cellUpdates(1) = "$D$4"
cellUpdates(2) = "$G$5"
cellUpdates(3) = "$Y$6"

For Each cell In cellUpdates

Range(cellUpdates(cell)).Select
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
Next cell

End Sub
你可以试试这个:

Private Sub All_Cells_Click()
    Dim cell As Variant
    For Each cell In ActiveSheet.Range("D3,D4,G5,Y6").Cells
        With cell
            .Formula = .Formula
            .Calculate
        End With
    Next cell
End Sub

第一部分在下面进行了介绍,但是我试图让数组中有不同行/列中的多个单元格。第二部分将仅在作为数组中第一个值引用的列中运行。(如果是A列,它将只沿A列向下移动,直到I=4,而不会移动到不同的列和行)

非工作部件:

Private Sub All_Cells_Click()
Dim cellUpdates(0 To 4) As Variant
Dim i As Integer

cellUpdates(0) = "$A$2"
cellUpdates(1) = "$B$3"
cellUpdates(2) = "$C$4"
cellUpdates(3) = "$D$5"
cellUpdates(4) = "$E$6"

For i = 0 To UBound(cellUpdates)

Range(cellUpdates(cell)).Select
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
Next i

End Sub

您是否尝试过设置
cell.Formula=cell.Formula
或调用
cell.Calculate
?不确定这意味着什么,您能否详细说明一下?运行它时不做任何事情?它在每个单元格上单击,但不更新值。单元格当前的措辞为ex:“=D1+D2”。单元格计算的唯一方法是单击单元格并按enter键。这是一个奇怪的.xlsm工作簿,在一个范围内调用Calculate应该会导致它更新
Private Sub All_Cells_Click()
Dim cellUpdates(0 To 4) As Variant
Dim i As Integer

cellUpdates(0) = "$A$2"
cellUpdates(1) = "$B$3"
cellUpdates(2) = "$C$4"
cellUpdates(3) = "$D$5"
cellUpdates(4) = "$E$6"

For i = 0 To UBound(cellUpdates)

Range(cellUpdates(cell)).Select
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
Next i

End Sub