2014-10-29 73 views
1

我正在编程一点点,并轻松添加客户端代码。但是当我添加一个客户端时,它给了我这个我无法摆脱的小错误。也许这将是一个简单的解决方案。这里是我的代码:Excel VBA文本编号

Private Sub btn_Toevoegen_Click() 
    Dim laatsteKlantNummer As Integer 

Range("B4:B13").End(xlDown).Select 
laatsteKlantNummer = ActiveCell.Value 
ActiveCell.Offset(1, 0).Value = txtKlant 
ActiveCell.Offset(1, 1).Value = txtNaam 
ActiveCell.Offset(1, 2).Value = txtAdres 
ActiveCell.Offset(1, 3).Value = txtWoonplaats 
ActiveCell.Offset(1, 4).Value = txtContact 
Me.Hide 
Range("B4:B13").Sort Key1:=Range("B4:B13"), Order1:=xlAscending 
End Sub 

此代码工作正常,但发生的事情是,当它把它在Excel工作表中它被作为文本而不是数量。所以它给了我错误:“存储为文本的数字”。之后,我可以点击转换为数字。像这样:(http://i.imgur.com/mfMnGFI.png)但是可以编码而不是一直点击它?

+0

什么行给出错误?这是可能的;) – 2014-10-29 14:38:25

+0

如果* txt *值来自窗体或类似的东西,用'CLng(txtAdres)'或'CDbl(txtAdres)'或'CDate(txtAdres)'强制它们的数值。你使用的那个取决于你想要放入单元格的值的类型。 – Jeeped 2014-10-29 14:43:00

+0

@Jeeped谢谢,那是我的问题!你能否将答案放在下面作为回答,以便我可以关闭它,并给你一个大赞! – 2014-10-29 14:46:32

回答

2

我不知道你会得到什么线这个错误,但例如如果这一个:

ActiveCell.Offset(1, 4).Value = txtContact 

您可以添加这对“转换”到一个号码:

ActiveCell.Offset(1, 4).Value = txtContact + 0 
+0

感谢队友,这也是我的问题的答案! – 2014-10-29 14:48:29

+0

对于你的问题,这是最好的答案,并为vba运行最快的代码。 @Jeepeds的回答也是一个正确的方法,但如果你需要将它转换为日期,那么这是明智的,对于一个正常的整数来说,这是一条可行的路。 – 2014-10-29 14:50:10

+0

实际上Jeeped评论是更好的方式,这取决于它是一个整数Clng(txtContact)将转换为长,CDbl(Textcontact)将转换为双精度(带有十进制数字).... – 2014-10-30 21:46:05