Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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_Excel Formula_Number Formatting - Fatal编程技术网

Vba Excel在带有公式的单元格上强制使用文本编号格式

Vba Excel在带有公式的单元格上强制使用文本编号格式,vba,excel,excel-formula,number-formatting,Vba,Excel,Excel Formula,Number Formatting,我正在尝试将公式存储在单元格中。单元格的NumberFormat设置为“@”,即文本。当我这样做时: TargetSheet.Cells(Row, Col).Formula = "=A7" A7中有“1805R03-01”我得到的“=A7”显示在单元格中。 尽管我认为如果您通过Formula属性设置文本格式的字段,应该允许您为其定义公式,但我将代码更改为: (1) TargetSheet.Cells(Row, Col).NumberFormat = "General" (2) Target

我正在尝试将公式存储在单元格中。单元格的
NumberFormat
设置为
“@”
,即文本。当我这样做时:

TargetSheet.Cells(Row, Col).Formula = "=A7"
A7中有
“1805R03-01”
我得到的
“=A7”
显示在单元格中。 尽管我认为如果您通过
Formula
属性设置文本格式的字段,应该允许您为其定义公式,但我将代码更改为:

(1)  TargetSheet.Cells(Row, Col).NumberFormat = "General"
(2)  TargetSheet.Cells(Row, Col).Formula = "=A7"

这很好地满足了我的要求,因为现在我的单元格显示的是正确的值
“1805R03-01”
,但是Excel再次将数字格式设置为“@”,因此,如果我在该单元格上按enter键,显示屏将返回到
“=A7”
。我可以在上面的代码中重新添加行
(1)
和附加行
(3)
,但这只意味着我将停止将公式转换回文本一次,在该单元格上按两次enter键仍然会导致
“=A7”
。如何阻止Excel在单元格上强制使用文本编号格式?当我手动将单元格的格式返回到“常规”时,单元格显示正确,因此不需要文本数字格式。

我不确定这是否有帮助,但我以前遇到过类似的问题,Excel会根据自己的判断自动切换回数字格式

所以我做的是:假设我有两个专栏

A          B
abc       123
asuh      412
auw       9781
ija       124
我会将另一列C列的编号设置为常规

Range("C:C").Select
Selection.NumberFormat = "general" 
然后将A或B复制到其中。在您的情况下,它将是自动化的代码到它

它也没有再变成文本或数字。
至少对我来说。

我不确定这是否有帮助,但我在过去遇到过类似的问题,Excel会根据自己的判断自动切换回数字格式

所以我做的是:假设我有两个专栏

A          B
abc       123
asuh      412
auw       9781
ija       124
我会将另一列C列的编号设置为常规

Range("C:C").Select
Selection.NumberFormat = "general" 
然后将A或B复制到其中。在您的情况下,它将是自动化的代码到它

它也没有再变成文本或数字。
至少对我来说。

如果单元格
A7
的数字格式是
text
,请尝试将其设置为
general
。然后在
单元格(行、列)
中重新输入公式,并检查是否得到不同的结果


依赖单元格(在公式审核的上下文中)似乎继承了它们的先例的数字格式——除非先例单元格的数字格式是
general
如果单元格
A7
的数字格式是
text
,请尝试将其设置为
general
。然后在
单元格(行、列)
中重新输入公式,并检查是否得到不同的结果


依赖单元格(在公式审核的上下文中)似乎继承了它们的前导单元格的NumberFormat——除非前导单元格的NumberFormat是
general

,因此自动格式化后,Excel不再将公式中的
A7
视为单元格引用,而是将其视为文本字符串
“A7”
?如果单元格
A7
的数字格式是文本,请尝试将其设置为其他格式(甚至是技术错误的格式,如
0
,以便查看)。然后在
单元格(行、列)
中重新输入公式,并检查是否得到不同的结果。您可以尝试的另一件事是
TargetSheet.Cells(行,列)。Formula=“=”“”&A7”
并查看空字符串是否干扰自动格式化。可能有一个应用程序设置,您可以通过代码切换以打开/关闭自动格式化。它实际上将整个公式
“=A7”
而不仅仅是
“A7”
视为文字字符串。事实上,你找到了解决方案,当我把源单元格格式设置为
常规
(之前是文本)时,问题就不再发生了。如何将注释标记为解决方案?如果您想将其标记为解决方案,我已将注释作为答案发布,并提供了一些额外的详细信息。因此,自动格式化后,Excel不再将公式中的
A7
视为单元格引用,而是将其视为文字字符串
“A7”
?如果单元格
A7
的数字格式是文本,请尝试将其设置为其他格式(甚至是技术错误的格式,如
0
,以便查看)。然后在
单元格(行、列)
中重新输入公式,并检查是否得到不同的结果。您可以尝试的另一件事是
TargetSheet.Cells(行,列)。Formula=“=”“”&A7”
并查看空字符串是否干扰自动格式化。可能有一个应用程序设置,您可以通过代码切换以打开/关闭自动格式化。它实际上将整个公式
“=A7”
而不仅仅是
“A7”
视为文字字符串。事实上,你找到了解决方案,当我把源单元格格式设置为
常规
(之前是文本)时,问题就不再发生了。如何将评论标记为解决方案?如果您想将其标记为解决方案,我已将我的评论作为一个答案发布了一些额外的细节。谢谢,这是一个很好的建议,与@chillin在对我的问题的评论中给出的答案大致相同,要使源单元格不是文本,excel似乎要从源单元格中复制数字格式和值。谢谢,这是一个很好的建议,与@chillin在对我的问题的评论中给出的答案类似,要使源单元格不是文本,excel似乎希望将数字格式与值一起从源单元格复制。