存储用户输入以便稍后检索

时间:2013-10-06 19:28:29

标签: excel vba excel-vba

我有一个电子表格,用户在输入页面上输入各种详细信息,然后按下计算按钮以获得他们想要的内容。输入是字符串,数字和日期。

我想保存用户每次计算的输入,以便以后可以输入calc id而不必输入输入。

我想到这样做的一个简单方法是在计算运行时将输入复制到另一个工作表,其输入位于带有calc id的列中。然后只需将未来的输入保存在单独的列中,并查找正确的列以便在以后检索输入。

我读了这个问题 - What are the benefits of using Classes in VBA?并且认为最好创建一个名为CalculationInputs的类,其中所有细节都存储在一个对象中。这对我所需要的东西来说可能有些过分,但我想问其他人如何解决这个简单的任务。

1 个答案:

答案 0 :(得分:2)

您可以使用Names来定义工作簿或工作表范围内的变量。通常这些用于定义范围,更具体地说是动态范围,但它们也可用于存储静态/常量值。

要手动创建Name,请从公式功能区中命名管理器:

enter image description here

单击“新建”按钮,然后为其命名:

enter image description here

确保将=""放在“引用到”字段中,如果将其留空,则不会创建名称。

然后当您按“确定”或任何时间转到“名称”管理器时,您将看到工作簿中所有可用Names的列表。

enter image description here

您可以通过Names管理器编辑这些内容,这可能很乏味,或者您可以轻松使用VBA和输入来控制它们,例如:

Sub Test()
    ActiveWorkbook.Names("MyAddress").RefersTo = "734 Evergreen Terrace"
End Sub

您可以执行以下操作来捕获值,我们使用其他宏或用户公司代码将值分配给Name

Activeworkbook.Names("MyAddress").RefersTo = _
    Application.Inputbox("please enter your address")

如果您运行此命令,然后查看名称管理器,您将看到该值已更新:

enter image description here

在VBE中,您可以参考名称:

Debug.Print ActiveWorkbook.Names("MyAddress").Value '# Prints in the immediate pane
Range("A1") = ActiveWorkbook.Names("MyAddress").Value  

也可以从工作表中访问(读取)这些内容,例如:

enter image description here