我编写了一个非常简单的代码,该代码返回一个范围内每个活动单元格的最后6个字符。
在找到要返回字符的特定单元格之前,该代码将运行良好:“ MARC01”。不幸的是,它返回一个日期类型字符(01.Mrz)。
通过使用普通的excel公式,它可以很好地工作,这就是为什么我希望它也可以与Macro一起工作的原因。
在这里,您可以看到我的代码,该代码从“ A”列中获取字符串并将其输入到“ B”列中:
Range("B12").Activate
Do
ActiveCell.Value = Right((ActiveCell.Offset(0, -1).Value), 6)
ActiveCell.Offset(1, 0).Activate
Loop Until ActiveCell.Offset(0, -1).Value = 0
最佳答案
Excel喜欢尝试解释某些数据,而不仅仅是保持原样。尤其是使用看起来像日期的字符串和数字条目来实现。
解决方法有两种:
将文本前缀字符放在字符串前面。这通常是单引号。 (有关代码,请参见Scott的答案)
在其中放置值之前,将单元格格式设置为“文本”。
Sub foo()
Range("B12").Activate
Do
ActiveCell.NumberFormat = "@"
ActiveCell.Value = Right((ActiveCell.Offset(0, -1).Formula), 6)
ActiveCell.Offset(1, 0).Activate
Loop Until ActiveCell.Offset(0, -1).Value = 0
End Sub