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

Vba 存储用户输入以便以后检索,vba,excel,Vba,Excel,我有一个电子表格,用户在输入页面上输入各种细节,然后按下计算按钮以得到他们想要的。输入是字符串、数字和日期 我想为用户保存每次计算的输入,以便以后他们可以输入calc id,而不必租用输入 我想到的一种简单方法是,在运行计算时将输入复制到另一个工作表中,输入位于具有calc id的列中。然后只需将将来的输入保存在单独的列中,并查找正确的列,以便在以后检索输入 我读了这个问题,认为最好创建一个名为CalculationPuts的类,将所有细节存储在一个对象中。对于我所需要的,这可能有些过分,但我想

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

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

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


我读了这个问题,认为最好创建一个名为CalculationPuts的类,将所有细节存储在一个对象中。对于我所需要的,这可能有些过分,但我想问问其他人如何解决这个简单的任务。

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

要从公式功能区的名称管理器中手动创建名称,请执行以下操作:

单击“新建”按钮,然后给它一个有意义的名称:

确保将
=”
置于“引用”字段中,如果将其留空,则不会创建名称

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

您可以通过
名称
管理器对其进行编辑,这可能很繁琐,或者您可以轻松使用VBA和输入来控制它们,例如:

Sub Test()
    ActiveWorkbook.Names("MyAddress").RefersTo = "734 Evergreen Terrace"
End Sub
您可以这样做来捕获值,我们可以使用其他宏或用户公司代码将值分配给
名称

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

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

在VBE中,您可以引用以下名称:

Debug.Print ActiveWorkbook.Names("MyAddress").Value '# Prints in the immediate pane
Range("A1") = ActiveWorkbook.Names("MyAddress").Value  
也可以从工作表中访问(读取),如:


根据您的第一个想法(单独的表单),您也可以“隐藏”此表单,以便最终用户看不到它。@PortlandRunner的评论+1。您甚至可以使工作表
xlVeryHidden
,以便用户不能右键单击并取消隐藏工作表。其语法为
Sheets(“SheetName”).Visible=xlVeryHidden
。使用
Names
。我会给你一些例子:)“以后”--如果你是说在同一个Excel实例中(即没有关闭/重新打开),我只会使用一个Userform并使用
。Hide
-该表单保存你的所有数据,并且在下次你
时所有内容都保持相同的值。Show
它。但是,如果您想通过关闭/打开来持久化数据,那么您必须将其放入一些排序表中。谢谢您的建议。谢谢,使用命名范围的好方法。回答也很好。我从StackOverflow中学到了如何使用它们,所以我只是向前看:)