0

2 週間前から、次のことを実行できるコードを作成しようとしています: ワークシート「Time Cards」の最初の 21 行がコピーされ、同じシートの下部にある最初の空白行に挿入されます。タイムカード。」また、行がコピーされたら、コピーされたばかりの選択の日付を格納するセル (シートの下部) を選択して、ユーザーが 6500 行下にスクロールする必要がないようにしたいと考えています。

このコードでは、シート ("Time Cards") を選択し、選択 C3:N23 をコピーして、シート ("Time Cards") の最後と最初の空白行に選択を貼り付ける必要があります。次に、「日付」を格納するセル (貼り付けたばかりの選択範囲内) を自動的に選択する必要があります (「日付」の範囲を検索するコードを記述しますか?)。すべてが完了したら、ユーザーがクリックしてデータ検証をクリアできるマクロ ボタンにリンクされたコードが必要です。これにより、新しく貼り付けられたセルに数式のみが残り、すべての VLOOKUPS と DATA VALIDATIONS が保持されます。クリア済み。

お願いします、誰かお願いしてください、コードを書くのを手伝ってください。私は本当に多くの調査を行い、いくつかの異なるアプローチを試しましたが、何も機能させることができませんでした. 私はVBAにあまり精通していないので、どんな助けでも大歓迎です。

これが私の最初の試みです:

Sub CopyInfo()

On Error GoTo Err_Execute

    Sheets("Time Cards").Select
    Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1, 0).Select


    Sheets("TC-Start Here").Select
    Range("C5:N25").Select
    Selection.Copy

    Sheets("Time Cards").Select
    'Range("C5:N25").Select
    Selection.Insert

Err_Execute:
    MsgBox "The Data has been successfully Copied"

End Sub

次に、最後の行を選択して貼り付けようとしました(2回目の試行):

Sub CopyInfo()

On Error GoTo Err_Execute

    Sheets("Time Cards").Select
    Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1, 0).Select


    Sheets("TC-Start Here").Select
    Range("C5:N25").Select
    Selection.Copy


    Sheets("Time Cards").Select
    Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
    Selection.Insert Shift:=xlDown

    Sheets("Time Cards").Select
    'Range("C5:N25").Select
    Selection.Insert

Err_Execute:
    MsgBox "The Data has been successfully Copied"

End Sub

うまくいかないようで、日付を含むセルを選択したり、検証をクリアしたりすることはできませんでした。

4

2 に答える 2

1

これはあなたが望むものだと思います。そうでない場合は、質問をさらに明確にしてください

    Dim lrow as long
    lrow = sheets("time cards").range("C5").end(xlup).row + 1
    sheets("TC-Start Here").range("C5:N25").copy
    sheets("time cards").range("C" & lrow).pastespecial paste:=xlpastevalues, _
                                                        operation:=xlnone, _
                                                        skipblanks:=False, _
                                                        Transpose:=false
    sheets("time cards").range("C5").end(xlup).select
于 2012-08-09T17:50:29.500 に答える
1
Sub CopyInfo()

    With Sheets("Time Cards")
         .Range("C5:N25").Copy .Cells(Rows.Count,3).End(xlUp).Offset(1, 0)
         .Cells(Rows.Count,3).End(xlUp).Select
    End With
    'need some info on exactly what should be cleared from the copied range...
    MsgBox "The Data has been successfully Copied"

End Sub
于 2012-08-09T18:23:28.330 に答える