2015-07-11 50 views
1

下面是一个代码,我必须将这两个单元格中的信息记录到一个单元格中,只要刷新数据并运行宏即可。顶部工作正常。我无法弄清楚的部分是“End Sub”之前的最后一行。代码的这一部分采用G3中给出的值并将其粘贴到D列中的下一个可用行中(这与代码的顶部完全分开)。我的问题是,它并没有将它粘贴到第2行开始的D列中,而是将第27行中的值粘贴到第27行。以静态形式将制定值粘贴到另一列中的代码

我试过弄乱了代码以查看是否可以得到将代码粘贴到第2行开始的D列中,但Im没有运气。

Sub TimeStamp() 
' 
' TimeStamp Macro 
' 
' Keyboard Shortcut: Ctrl+Shift+T 
' 
    ActiveCell.Formula = "=CONCATENATE(L1,N1)" 
    ActiveCell.Select 
    Selection.Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Application.CutCopyMode = False 

    ActiveSheet.Columns(4).SpecialCells(xlCellTypeLastCell).Offset(1, 0).Value2 = Range("G3").Value2 
End Sub 

回答

0

这将使您的宏工作。

Sub TimeStamp() 
' TimeStamp Macro 
' Keyboard Shortcut: Ctrl+Shift+T 
    With ActiveCell 
     .Formula = "=CONCATENATE(L1,N1)" 
     .Cells = .Value 
    End With 

    With ActiveSheet 
     .Cells(Rows.Count, "D").End(xlUp).Offset(1, 0) = .Range("G3").Value2 
    End With 

End Sub 

虽然我犹豫使用ActiveCell和ActiveSheet建议,你有没有提供了足够的细节,明确引用这些。我怀疑ActiveCell实际上是G3,但这并不确定。

请参阅How to avoid using Select in Excel VBA macros以获取更多有关摆脱依赖选择和激活来实现您的目标的方法。

+0

G3不是活动单元格。它是包含该值然后插入列D的单元格。活动单元格是TimeStamp所在的位置。但是,这工作完美,我感谢您的帮助和有用的网站。你会碰巧知道为什么在此代码中连接公式最终会做“换行文本”? –

+0

Excel用来任意分配*规则文本*单元格格式的规则从来没有清楚过,但无论使用'= L1&N1'还是'= CONCATENATE(L1,N1)',似乎都是一致的。 – Jeeped

+0

我通过录制自己使细胞列不被包裹来修复它。感谢您的帮助@Jeeped –

相关问题