2013-03-12 59 views
0

我正在做一个表单,我发现自己的文本框有一个奇怪的问题。VBA中的错误文本框

我要求用户插入一些数据,当它出现时,TextBox会更改数据。

一个例子,如果用户插入:03/01/2013,然后运行该形式中,该形式而不是与原始数据改变它执行代码,01/03/2013。

我意识到总是改变日子和月份,但从来不是一年。

额外的信息,我从来没有“告诉”表格,它将处理它的数据是一个日期。

我正在努力使其工作,所以任何帮助将不胜感激。

如果需要额外的信息,请让我知道。

代码:

Private Sub CommandButton1_Click() 

ThisWorkbook.Sheets("Hidden").Range("D1").Value = TextBox1.Value 

ThisWorkbook.Sheets("Hidden").Range("D2").Value = TextBox2.Value 

If TextBox1.Value < TextBox2.Value Then 

    If TextBox1.Value = "" Or TextBox2.Value = "" Then 

     MsgBox "...", vbExclamation, " ..." 

    Else 

    Run "macro" 

    ThisWorkbook.Sheets("SUMUP").Range("D11").Value = TextBox1.Value 

    ThisWorkbook.Sheets("SUMUP").Range("D12").Value = TextBox2.Value 

    End If 

Else 

MsgBox "..." & vbCrLf & "...", vbExclamation, " ..." 

End If 

End Sub 

感谢。

+0

所以你说没有任何代码与窗体做任何事情? – 2013-03-12 08:38:12

+0

不,我说的文本框而不是阅读03/01/2013它读取01/03/2013。我不知道它为什么会改变输入数据,我想解决它。谢谢 – themolestones 2013-03-12 08:50:31

+0

好吧,然后让我改述一下:你有任何代码背后的形式?你能分享吗?看起来不大可能的是,输入只是在没有任何代码修改它的情况下进行更改...... :-) – 2013-03-12 08:57:23

回答

0

您必须更改系统的日期格式才能接受vba表单的输入格式。 转到

开始>控制面板>时钟

语言和日期,根据地区和语言选择更改日期,时间或数字格式。在日期和时间格式下,选择短日期前的下拉菜单,然后选择dd-mmm-yy。在长时间做相同的事情,并选择dddd,mmmm dd,yyyy。我希望这会有所帮助

1

与您的描述相关的最常见问题:
您可能正在将用户输入保存到单元格中。如果是这样,请检查该单元格的格式。

请提供有关如何存储用户输入的更多信息。你用什么数据类型变量来存储用户输入?输入的迁移过程是什么?

后期编辑:

格式的细胞(简单的解决方案)

Range = Format(TextBox1.Value, "dd/mm/yyyy") 

附: 您可以将用户输入存储在变量:

Dim txtb1, txtb2 As String 

    'ThisWorkbook.Sheets("Hidden").Range("D1").Value = TextBox1.Value 
    'ThisWorkbook.Sheets("Hidden").Range("D2").Value = TextBox2.Value 
    ' 
    ' instead of storing the value in cell, use variables (now youre not going to need a "hidden" sheet 
    ' 
    txtb1 = TextBox1.Value 
    txtb2 = TextBox2.Value 

希望这有助于。

+0

这个问题,谢谢,我认为它会解决它。我认为,第一个问题超出了我对VBA的了解 – themolestones 2013-03-12 09:43:25

+0

由于您正在调用某张表HIDDEN,出于某种原因,我认为您将用户输入保存在理论上“隐藏”工作表的单元格中。有一种方法可以通过将输入保存到变量中来避免使用额外的或隐藏的工作表。 你可以阅读更多关于变量 - 我确定谷歌叔叔可以帮助你。有一点要记住 - 它要检查你的用户输入 - 确保用户实际上是输入日期 - 不是随机数或sql注入行等 – 2013-03-12 09:53:11

+0

谢谢,我很感谢您的意见。你对“隐藏”表格是正确的。是的,我会检查一些信息叔叔谷歌,XD。 – themolestones 2013-03-12 10:12:16

1

这是一个VBA:]。只需转换为字符串:

ThisWorkbook.Sheets("SUMUP").Range("D11") = Format(TextBox1.Value, "dd/MM/yyyy")