如何通过 VBA 根据另一个单元格更新单元格值

如何通过 VBA 根据另一个单元格更新单元格值

我查看了整个 stack exchange,但没有找到我正在寻找的东西。我有一个详细的清单,上面列出了一些需要在不同的日期和间隔进行持续校准的项目,我想做的是制作一个 VBA/宏,这样我就可以更新任何一个特定项目的校准日期,而不必查看每个单独的条目或使用 =VLOOKUP()。到目前为止,我还没有可以调用程序的可靠方法,但我设想的是在一个单元格中写入项目的 ID#,在另一个单元格中写入新的校准到期日期,并在它们旁边有一个按钮,以便搜索 ID#,向右移动一列,并用新日期替换单元格上的文本。解释起来很简单,但考虑到我四个小时前才开始学习 VBA,这被证明是一个挑战。到目前为止,我玩弄了一些代码,但无济于事:

range("a1").Formula = "=CELL("address", INDEX(H:J, MATCH(L11,H:H, 0),2))"

ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"

如果有人需要,我会提供更多信息或背景!

答案1

在公式中使用引号时,应该将其加倍:

Range("A1").Formula = "=CELL(""address"", INDEX(H:J, MATCH(L11,H:H, 0),2))"
ActiveCell.FormulaR1C1 = "=INDEX(R[-5]C[-9], 3, 2, )"

答案2

这样就非常接近了。您可以调整它以适合您的数据。注释掉的 MsgBox 命令可以删除,但对于调试来说很方便。

Sub SetCalDate()

    'Set up variables
    Dim ID, RowNum As Integer
    Dim NewCalDate As Date
    Dim IDNums As Range

    'Initialize variables
    ID = Range("A1").Value           'Assumes the ID to Find is in A1,
    NewCalDate = Range("B1").Value   'and the NewCalDate is in B1.
    'MsgBox NewCalDate
    Set IDNums = Range("C1:C10")     'This is the range of ID's to be searched.
    'You might need something like Set IDNums = Worksheets("Sheet3").Range("C1:C10")
    'if the ID numbers are on a different sheet.

    'Find the ID in IDNums
    RowNum = Application.WorksheetFunction.Match(ID, IDNums, 0)
    'MsgBox RowNum
    Range("D" & RowNum) = NewCalDate    'Assumes the CalDates are in column D.

End Sub

如果要将宏分配给按钮,请先将代码放入新模块,然后创建一个按钮并按照说明将 SetCalDate() 宏分配给它在此帮助页面上。 祝你好运。

相关内容