Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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
Excel 替换文本VBA时,如何避免数据格式化?_Excel_Vba - Fatal编程技术网

Excel 替换文本VBA时,如何避免数据格式化?

Excel 替换文本VBA时,如何避免数据格式化?,excel,vba,Excel,Vba,我是一个新用户! 我使用VBA已经有一段时间了,但我现在需要你的帮助 我写了一个宏,在许多事情中,它应该查找并替换列中的文本。 最初,专栏的文字是这样写的:“24.12.2019”。 我试图做的是找到“.”并用“/”替换它 但是,通过这样做,VBA尝试将其转换为日期(英文格式为mm/dd/yyyy)。 显然,当日期大于12时,它会将其保留为文本 我希望保持格式为“dd/mm/yyyy”,并避免使用VBA来转换范围 (“SearchFormat:=False,ReplaceFormat:=Fals

我是一个新用户! 我使用VBA已经有一段时间了,但我现在需要你的帮助

我写了一个宏,在许多事情中,它应该查找并替换列中的文本。 最初,专栏的文字是这样写的:“24.12.2019”。 我试图做的是找到“.”并用“/”替换它

但是,通过这样做,VBA尝试将其转换为日期(英文格式为mm/dd/yyyy)。 显然,当日期大于12时,它会将其保留为文本

我希望保持格式为“dd/mm/yyyy”,并避免使用VBA来转换范围


“SearchFormat:=False,ReplaceFormat:=False”
不起作用)

如果您的目标是让excel将数据识别为日期,但采用日/月/年格式,下面是您的操作方法。只需更改选择的
列(“A:A”)
部分和目标范围(“A1”)


为了强制Excel在列中保留文本,必须在替换现有文本之前运行以下代码:

Dim sh As Worksheet
   Set sh = ActiveSheet 'use here your sheet
   sh.Range("E:E").TextToColumns Destination:=sh.Range("E1"), FieldInfo:=Array(1, 2)

您可以在字符串前面添加一个
,将其保留为文本谢谢您的回答!相信我,我试过了,但是没有用请提供你代码的相关部分也许你的代码的一个更完整的例子,可以帮助我们回答你的问题。你喜欢dd/mm/yy日期格式而不是带“/”的文本吗?我已经编写了代码来实现这一点,您只需要将其应用于您的。谢谢FaneDuru,我将尽快尝试并让您知道。注意在单元格中保留一些值,您希望稍后替换内容并保持文本格式,与您的输入无关…谢谢Mark,我会尽快让你知道。@LucaA88澄清这一点不会将专栏保留为文本。它将把它转换成dd/mm/yy日期格式。这就是它应该做的。日期不是文本。格式化日期/将日期视为文本是让人头疼的问题。但是
NumberFormat=“dd/mm/yy;”“
将根据区域设置格式化日期。如果日期以“dd.mm.yy”格式显示,我认为该格式的应用将以相同的方式显示。我不知道这是否是他想要的。无论如何,他会在测试后澄清问题,正如他所宣布的那样…@FaneDuru如果这是一个问题,我将添加一个关于如何获取格式代码并相应修改代码的演练。
Dim sh As Worksheet
   Set sh = ActiveSheet 'use here your sheet
   sh.Range("E:E").TextToColumns Destination:=sh.Range("E1"), FieldInfo:=Array(1, 2)