你如何持久地格式化文本框来显示数值?

我确信这是一个简单的问题,只是一个简单的答案,但是我找不到它。

我已经inheritance了我必须修复的电子表格。 无论谁写了它,都广泛使用VBA和VBA UserForms来input数据。 在一种forms中,input文本和数字信息,然后将其保存到特定工作表上的logging中。 此电子表格用于logging项目信息。 它被复制,并且一次又一次地被复制。 随着每个重新复制,它被清除并用于下一个项目。

用户向我发送了其中一个主要项目的电子表格。 VBA,数据inputUserForm有一个问题。 一个TextBox ,接受文本或数字,总是重新格式化数字作为您退出该字段的date!? 我已经三倍检查了VBA代码。 与此字段相关的没有特殊的OnEnterOnExit代码可以重新格式化数据。 此外,我无法从devise器中find与TextBox关联的Format属性。

我是C / C#开发人员,而不是VBA开发人员。 不过,这个“简单”的IDE让我难住了。 我无法find重新格式化TextBox显示值的属性。

我怎样才能修复TextBox以便它坚持将数字解释为数字而不是date?

进一步说明

值得一提的是两件事。 首先,用户不能修改这些表单或VBA代码。 底层模块受密码保护,只有我自己和一对经理知道密码。 此外,没有人触及代码,因为我是公司内唯一的开发人员,每个人都有点恐慌,他们可能会破坏一些东西。

其次,文件中的某些内容可能已经损坏。 当这个文件发送给我时,用户也提到他正在处理的工作表被重命名。 看起来有些东西没有正确保存,因为“工作表”选项卡被重命名为随机的hexstring值。

除了这两个问题之外,一切似乎都在这种forms上正常运作。 任何帮助或指导将不胜感激。

您可以使用cLng强制正确的格式:

首先在单元格A1中input= TODAY(),然后运行:

 Sub TextBoxIssue() With ActiveSheet.Shapes("TextBox 1").TextFrame.Characters .Text = Range("A1").Value End With MsgBox "However when we use cLng......" With ActiveSheet.Shapes("TextBox 1").TextFrame.Characters .Text = CLng(Range("A1").Value) End With End Sub 

在退出文本框时,确实有大量的代码正在格式化文本。 你还没有find它。 如果进入Userforms类模块并从左侧下拉列表中select文本框,则可以在右侧下拉列表中看到所有事件。 粗体事件正在使用中。 我假设你已经检查了所有这些,但这是开始的地方。

接下来,查找使用WithEvents关键字的自定义类模块。 它们可以触发用户窗体类模块之外的事件。

最后,在代码中search=Format(tbxName.Text,"mm/dd/yyy")所有实例或者这样的代码。 某处代码可能使用Format函数来填充该文本框。