2017-05-10 4 views
0

私はVBAを習得し始めています。私はここで解決策を見つけようとしましたが、無駄です。最後の行を見つけて、行内の特定の列を選択してください

LOGと呼ばれるワークブック内のシートに、列を記入するときにA列にタイムスタンプが付いているシートがあります。タスクを完了すると、列Aに=CONCATENATEを使用して、行A〜Hを要約します。列Iには、行300以上に満たされた数式の内容があります。列Aは、タイムスタンプ (「ctrl +:」)を入力するまでは空白です。

私がしたいのは、コマンドボタンでマクロを実行し、列Aの最後のタイムスタンプ行を見つけ、その列の内容(数式ではない)を選択してクリップボードにコピーすることです。

私はstackoverflowで見つかった非常に多くのさまざまな提案を変更しようとしましたが、ほとんど成功しませんでした。私は間違ってやっていることを本当に確信していないし、私は非常に多くを試してみたが、私は例のためにあなたと共有するか分からない。どんな助けでも大歓迎です!再度、感謝します!

答えて

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を実行して、あなたのクリップボードに値を持っている必要があります。

+0

これは完璧に機能しました。うわー、本当にありがとう!私は本当に助けに感謝します! –

+0

それを聞いて幸せ:) - 私はこれを長い間自分自身のために探していた、それはすべての時間を使用してください。最終的にはSOのこれの基礎を発見した。これで問題が解決したら、その答えを受け入れることができますか? – pwwolff

関連する問題