查找最后一行,选择行中的特定列

时间:2017-05-10 21:40:56

标签: excel vba excel-vba

我刚开始学习VBA,我试图在这里找到解决方案,但无济于事。我正在寻找一个VBA宏:

我的工作簿中有一张名为LOG的工作表,当我开始填充该行时,它会在A列中获取时间戳。完成任务后,我在第一列中使用=CONCATENATE来总结行A到H.第I列将公式内容填充到第300行或更多行。在输入时间戳之前,A列是空白的  (“ctrl +:”)。

我想要做的是通过命令按钮运行宏,它将在A列中找到最后一个带时间戳的行,然后选择并将第I列中该行的内容(而不是公式)复制到剪贴板。 / p>

我试图修改我在stackoverflow中找到的许多不同的建议,但收效甚微。我不确定我做错了什么,我已经尝试了很多这些我不知道哪些我会与你分享一个例子。任何帮助将非常感谢!再次感谢!

1 个答案:

答案 0 :(得分:0)

1)定义一个将一些文本复制到剪贴板的功能:

Sub CopyText(Text As String)
    'VBA Macro using late binding to copy text to clipboard.
    'By Justin Kay, 8/15/2014
    Dim MSForms_DataObject As Object
    Set MSForms_DataObject = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
    MSForms_DataObject.SetText Text
    MSForms_DataObject.PutInClipboard
    Set MSForms_DataObject = Nothing
End Sub

然后是这样的:

Sub GetLastTimestampAndCopy()
    dim ws as worksheet
    dim strValue as string
    dim lngLastRow as long

    set ws = Activeworkbook.Worksheets("LOG")

    ' Get the last populated cell in the first column
    lngLastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row

    ' Get corresponding value in the same row but in column I
    strValue = ws.Cells(lngLastRow, 9).Value

    CopyText strValue
End Sub

执行第二个SUB,你应该在剪贴板上有值。