2012-03-09 36 views
0

我正在尝试使用一些宏来格式化一些数据,以便制作价格表。当我把这些信息放在excel中时,它可以正常工作,但是其中一些笔记会将其放到下一行。这应该将单元格内容添加到它上面的单元格中。如何附加具有公式值的单元格?

Sub Macro1() 
    For i = 8 To 100000 
     If Left(ActiveSheet.Cells(i + 1, 1).Value, 2) = "AC" Or ActiveSheet.Cells(i + 1, 1).Value = vbNullString Then 
     Else 
      If Left(ActiveSheet.Cells(i + 1, 1).Value, 4) = "Page" Then 
       ActiveSheet.Rows(i + 1).Delete shift:=xlUp 
      Else 
       Dim tempString As Variant 
       tempString = ActiveSheet.Cells(i + 1, 1).Value 
       ActiveSheet.Cells(i, 1).Value = ActiveSheet.Cells(i, 1).Value + " " + tempString 
       ActiveSheet.Rows(i + 1).Delete shift:=xlUp 
       i = i - 1 
      End If 
     End If 
    Next 
End Sub 

,直到我碰到一个单元格的值它工作得很好:

=- 4-7 

(这是不是一个真正的公式,它只是看起来像一个) ,给了我一个类型不匹配错误。我应该用另一种方式来指定单元格内容吗?此外,可能有更好的方法来指定范围,我真的只想一直沿A列向下。任何帮助表示赞赏。

+2

我无法复制您的错误?你可以在某个地方发布样本吗?我会做的Mods:1)我会在代码开始时用自动过滤器删除“页面”单元格2)在列A中设置从最后一个单元格向上看的范围而不是硬编码100000 3)删除自底向上的意思是你可以删除你的'i = i-1'修复 – brettdj 2012-03-10 05:10:41

+1

+1)所有3个好点!即使我会推荐。这里是第4点:在Excel中连接字符串时使用“&”而不是“+” – 2012-03-11 15:23:25

+0

谢谢!这非常有帮助,我很高兴地说这个子工作正常! – Riet 2012-03-13 16:00:37

回答

0

只需使用.Formula代替.Value

这将返回一个字符串常数,且它是一个常数,或在“公式”是Excel中的一个字符串,认为它是适当。

相关问题