Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 防止excel更改单元格内容以获取文字值_Vba_Excel_Formula - Fatal编程技术网

Vba 防止excel更改单元格内容以获取文字值

Vba 防止excel更改单元格内容以获取文字值,vba,excel,formula,Vba,Excel,Formula,我编写了一个模块脚本,该模块读取从SQL转储粘贴的数据,并将其转换为SQL的数据插入脚本。它工作得很好,唯一的问题是包含以下项的单元格: 11-20 它不是将我的值填充为“11-20”,而是将其转换为“11月20日” 我已经调整了从文本到值再到值2的单元格读取方式,文本最接近右边(其余的做一个数学计算,这会使我的整个工作表更加糟糕,即日期)。我也尝试过像范围(“X:X”).clear和clearformat这样的东西。这也不起作用 如何强制此单元格的字符串读取为文本CSV内容,并忽略excel向

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

11-20

它不是将我的值填充为“11-20”,而是将其转换为“11月20日”

我已经调整了从文本到值再到值2的单元格读取方式,文本最接近右边(其余的做一个数学计算,这会使我的整个工作表更加糟糕,即日期)。我也尝试过像
范围(“X:X”).clear
clearformat
这样的东西。这也不起作用

如何强制此单元格的字符串读取为文本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

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

例如:

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

这将把值格式化为
文本
,并防止在添加数据时将其解释为
日期
。一旦Excel确定这是一个日期,就太晚了。

我很确定,只需格式化单元格,右键单击要格式化为纯文本的单元格范围,单击“格式化单元格”,然后在“数字选项卡”下显示格式化类型的“类别”,例如:“常规、数字、货币等”,选择显示“文本”的位置然后单击“确定”,任何文本都将以与您编写文本相同的方式进行计算,因此,即使您编写“11-5-18”,它也将仅此而已,不会被视为日期或任何内容。

如果您预先格式化他从中提取数据的源文件,它将起作用,否则Excel将按其希望的方式进行格式化…正确,但这不是问题。我会接受任何这样的工作,尽管我已经尝试过了。这将11-20转换为43424。很遗憾,文本格式不起作用。宾果!这就成功了!谢谢你的回复!在粘贴数据之前,我没有考虑调整格式。。。