2014-05-09 63 views
0

我用下面的代码中插入从我的结果集到我的电子表格值不处理“坏”字:VBA插入值到电子表格

Rst.MoveFirst 
    Do While Rst.EOF = False 
    For i = 0 To Rst.Fields.Count - 1 
     ActiveCell.Value = Rst.Fields(i).Value 'insert value into cell 
     ActiveCell.Offset(0, 1).Activate  'move to next cell for next value 
    Next i 
    ActiveCell.Offset(1, -i).Activate   'move to next row for next record 
    Rst.MoveNext 
    Loop 

我遇到的问题是,一些用户使用=作为输入中的第一个字符,并且excel不像那样(“应用程序定义的或对象定义的错误”)。

我已经看到Entering '=' as the first character in a cell的解决方法,但我不想将'应用到每个字段,理想情况下只有在以=开头时才适用。

我需要一个也适用于空值的解决方案。我尝试了一堆不同的组合(IsNull,IsDBNull),但我似乎无法找到可行的组合。

+1

您显示的链接还有一个答案,建议在添加以'='开头的值之前将单元格格式设置为“文本”,这对您不起作用? –

+0

伟大的呼唤,@TimWilliams - 我将用户输入单元格的范围设置为明文,VBA很高兴!如果您想将其转换为答案,我会接受它。否则,可能只是关闭重复? – pennstatephil

回答

0

正如@timwilliams建议的,我使用this answer来设置范围的格式(看起来比@ tompage的逐个单元格方法更有效)到文本。

0

我坐在一台Linux机器所以我现在不能对此进行测试,但是从内存...

如果您设置单元格的数字格式为“@”您指定的值,那么前应该意味着它取值为文字字符串

这也意味着,“0131”将不会被更改为131

ActiveCell.NumberFormat = "@" ' This Cell will hold text 
ActiveCell.Value = Rst.Fields(i).Value 'insert value into cell 

你可以把格式化基于Rst.Fields IF语句中( i)。如果您只想对文本字段执行此操作,请键入

相关问题