0

ユーザーがsheet2にデータのリストを挿入しなければならないExcelシートをいくつか入手しました。次に、ユーザーがボタンを押すと、sheet2に挿入されたデータに基づいてsheet1が更新されます。

このコードは、sheet2のデータがsheetにないかどうかを検出し、データを正しく挿入します。また、既存のレコードをオプト化する必要があります。sheet1の既存のデータには、コメント付きのmanuel列が追加されています。これらのコメントは、データの更新時に削除しないでください。

sheet1のデータはCからN列にあります-キーはJにあります。

    Dim iLast As Long
Dim iCounter As Integer

iLast = Sheets(2).Range("I" & Application.Rows.Count).End(xlUp).Row

Dim rng As Range

For iCounter = 2 To iLast
    Set rng = Sheets(1).Range("J:J").Find(Sheets(2).Range("I" & iCounter).Value)

    If rng Is Nothing Then
        Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy
        Sheets(1).Range("C" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteAll
        Range("B2").Select

        'Insert mailto link
        Selection.Copy
        Sheets(1).Range("B" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row).Select
        'Range("B3").Select
        ActiveSheet.Paste
        ActiveSheet.Paste
        Application.CutCopyMode = False
    Else

    'MsgBox "update existing row with new data - how to"

    End If

Next iCounter 
4

1 に答える 1

0

新しい行を追加するのと同じ方法でそれを行うことができるはずです。

xlPasteの代わりにxlPasteValuesを使用する場合、シート1のすべてのコメントは影響を受けません。

値をコピーするだけで、コピーする余分なフォーマットやコメントがないと仮定します。

あなたが何を達成しようとしているのか、それが私にとって少し難しいのか正確にはわかりませんが、これがあなたがやろうとしていることだと思いますか?

Dim iLast As Long
Dim iCounter As Integer

iLast = Sheets(2).Range("I" & Application.Rows.Count).End(xlUp).Row

Dim rng As Range

For iCounter = 2 To iLast
    Set rng = Sheets(1).Range("J:J").Find(Sheets(2).Range("I" & iCounter).Value)

    If rng Is Nothing Then
        Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy
        Sheets(1).Range("C" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row + 1).PasteSpecial xlPasteAll
        Range("B2").Select

        'Insert mailto link
        Selection.Copy
        Sheets(1).Range("B" & Sheets(1).Range("J" & Application.Rows.Count).End(xlUp).Row).Select
        'Range("B3").Select
        ActiveSheet.Paste
        ActiveSheet.Paste
        Application.CutCopyMode = False
    Else
        Sheets(2).Range("B" & iCounter & ":" & "M" & iCounter).Copy
        Sheets(1).Range("C" & rng.Row).PasteSpecial xlPasteValues
    End If

Next iCounter
于 2012-12-14T16:13:41.983 に答える