在将值插入电子表格时,VBA不处理“坏”字符

时间:2014-05-09 20:15:14

标签: excel vba excel-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的解决方法,但我不想将'应用于每个字段,理想情况下,仅当它以=开头时。

我需要一个也适用于Null值的解决方案。我尝试了很多不同的组合(IsNull,IsDBNull),但我似乎无法找到一个有效的组合。

2 个答案:

答案 0 :(得分:0)

我现在正坐在Linux机上,所以我无法通过内存测试这个......

如果将单元格的数字格式设置为" @"在分配值之前,那应该意味着它将值作为文字字符串

这也意味着" 0131"不会被改为131

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

如果您只想对文本字段执行此操作,可以将结构化基于Rst.Fields(i).Type进行格式化

答案 1 :(得分:0)

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