我使用Excel宏来创建填充了给定csv文件数据的新工作簿。一列对用户输入某些属性值是开放的。这些值必须符合数据类型和某个格式以供其他处理系统接受,以下是一些示例:
现在我想添加一个验证,以检查输入的输入值是否可以处理或必须更改,例如:
如何设置此验证?我对VBA很陌生,不知道最好的方式。到目前为止我找到的可能性:
通过Worksheet.Range.Validation添加验证,但我没有任何线索如何设置Formula1来检查正确的值。
通过Worksheet_Change,这里的问题是我创建了新的工作簿,显然不包含我在程序代码中编写的Worksheet_Change,因为它是一个新的工作簿。
那么最好的方法是什么?
答案 0 :(得分:1)
在没有VBA的情况下,您可以在工作簿端进行相当多的数据验证。例如,对于值C,您可以以该单元格的自定义数字格式输入格式( Float值格式化为“#。## 0,0 ###”),然后应用数据验证确保只在您想要的范围内输入数字。
答案 1 :(得分:0)
使用 Worksheet.Range.Validation 并不是很节省,因为如果用户从剪贴板粘贴数据,则不会触发它。
转到Workbook_SheetChange。在那里实现验证并将工作簿保存为模板。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Debug.Assert (Format(Target.Value, "#.##0,0#") = Target.Value)
End Sub
如果您使用此approch,请确保将所有单元格格式化为文本。否则Target.Value会给你一个插值。
然后打开模板并将cvs导入其中:
wb = Application.Workbooks.Add("path-to-template.xslm")
Application.EnableEvents = false ' You don't want to trigger change events during import
myimport(wb)
Application.EnableEvents = true