将单元格预设保存在下拉列表中

时间:2018-03-19 18:37:39

标签: excel vba excel-vba

目前,我创建了一个电子表格,其中包含一系列输入,通过公式列表运行它们,然后将结果吐出到报告中。工作表。

我已经手动将每个报告保存为单独的CSV,但我希望有更好的方法向前推进,因为在我每月报告时打开10个CSV会非常累人。

我正在寻找一种方法来开始将所有这些报告保存到"数据库"。我希望有一个单元格用于用户输入名称和两个按钮。一个以用户输入的名称保存当前报告,另一个用于删除旧记录。然后我可以通过在下拉列表中选择它们来重新访问旧条目。

我过去曾涉足过VBA和Macros,但这比我过去处理过的要复杂得多。寻求一些帮助/指导。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

根据您的报告需要使用的方式,您可能会发现只需将数据放入一个大的Excel表格(插入标签>表格)即可。执行此操作时,Excel将自动填充您在列中输入的所有公式,并使用标题而不是A1样式引用显示公式。

enter image description here

我使用这种格式,在已经完成的每一行的“从活动列表中删除”下添加Y.然后每当我保存文件或查看今天的状态时,我都会过滤掉旧的文件并查看新文件。其他过滤器可以复制粘贴或打印我喜欢的任何安排。

enter image description here

表中的过滤器和其他内容可以在VBA中作为Sheets(“ThisSheet”)引用.ListObjects(1),它是一个具有许多有用属性和方法的对象。

有关VBA的信息,请在此处阅读更多内容:https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables

这是我自动过滤表格的代码,用于在保存时隐藏非活动项目。您可以在VBA编辑器的ThisWorkbook中添加它:

enter image description here

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Sheets("Sheet1").Activate
SelectedCell = ActiveCell.Address 'this saves your screen selection for after the filtering
ActiveSheet.ListObjects(1).Range(1, 1).Select
If ActiveSheet.ListObjects(1).AutoFilter.FilterMode = True Then
    ActiveSheet.ListObjects.Item(1).AutoFilter.ShowAllData
End If
A = ActiveSheet.ListObjects(1).Range.Rows(1).Find("Remove from List").Column - _
  ActiveSheet.ListObjects(1).Range.Column + 1
ActiveSheet.ListObjects(1).Range.AutoFilter field:=A, Criteria1:="="
Range(SelectedCell).Select

End sub