我编写了一个非常简单的代码,该代码返回一个范围内每个活动单元格的最后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

10-08 13:11