防止excel改变单元格内容以获取字面值

时间:2018-01-30 23:56:13

标签: excel vba excel-vba formula

我编写了一个模块,用于读取我从SQL转储中粘贴的数据,并将其转换为SQL的数据插入脚本。它工作得很好,唯一的问题是包含以下项目的单元格:

11-20

而不是将我的值填充为'11 -20',而是将其转换为'20 -Nov'。

我已经调整了我如何将文本从文本读取到值到值2,文本最接近正确(休息做一个数学计算,使我的整体表格更糟糕,即日期)。我也尝试过Range("X:X").clearclearformat这样的事情。这也不行。

如何强制将此单元格的字符串读取为文字CSV内容,并忽略excel正在折腾的公式/计算?

编辑: 感谢BraX的解决方案!

我无法通过从Excel中的一个选项卡复制到下一个选项卡来完成此操作,但我确实通过将操作暂停到一个消息框来提示用户只需导航到SQL并放入数据内容进入夹板。这现在完美无缺!

Cells.Select
Selection.NumberFormat = "@"

    MsgBox "Please navigate to SQL and copy your data to be insurted, including headers. When done click OK"
    Range("A1").Select
    ActiveSheet.Paste

2 个答案:

答案 0 :(得分:1)

将数据添加到工作表之前,请为受影响的列设置NumberFormat@

示例:

ActiveWorkBook.WorkSheets("Sheet1").Range("A:A").NumberFormat = "@"

这会将值格式化为Text,并防止在添加数据时将它们解释为Date。一旦Excel确定它是一个约会,那就太晚了。

答案 1 :(得分:0)

我非常确定所需要的是格式化单元格,右键单击要格式化为纯文本的单元格区域,单击“格式化单元格”,然后在“数字标签”下显示“CATEGORY”格式的类型,例如:“常规,数字,货币等”选择“文本”的位置并单击“确定”,任何文本的评估方式与编写文本的方式相同,即使您编写“11-5-18”它将只是那个,不会被视为日期或任何事情。