1

以下のコードを記述して、2つのセルが同じかどうかを確認します。列20のセルは、別のシートからのコメントを返すvlookupです。列16のセルにこれらのコメントが既に含まれているかどうかを確認し、含まれていない場合は、マクロに20のセルから16のセルに値を貼り付けます。コメントが必要なため、基本的にこれを実行します。 16では純粋なテキストになりますが、コメントはシートの隣にあるピボットテーブルに関連しているため、動的に(別のマクロを介して)更新する必要があります。

編集:関連がある場合に備えて、Excel2007を使用しています。

以下のコードでは、マクロが列20のセルをコピーしようとすると、問題が発生します。このコードは具体的には次のとおりです。

ActiveSheet.Range(Cells(rowstest, 20)).Copy

完全なコードは次のとおりです。

Sub MgrCmntsTest()
    Application.ScreenUpdating = False
    Dim rowstest As Integer
    rowstest = 1
    Dim comments As String
    Dim commentsForm As String
    With ActiveSheet.Range("a1:u500")
        Do
        comments = Cells(rowstest, 20).Value
        commentsForm = Cells(rowstest, 16).Value
        If comments = commentsForm Then
            rowstest = rowstest + 1
        Else
            ActiveSheet.Range(Cells(rowstest, 20)).Copy
            ActiveSheet.Range(Cells(rowstest, 16)).Select
            ActiveSheet.PasteSpecial Type:=xlPasteValues
            rowstest = rowstest + 1
        End If
        Loop While rowstest < 501
    End With
    Application.ScreenUpdating = True
End Sub
4

1 に答える 1

2

実際には、コードを次のように減らすことができます

Range("p1:P500").Value = Range("T1:T500").Value

(値が異なる場合は値をコピーする必要があり、同じ場合でも値をコピーできるため)

于 2013-02-07T12:07:05.447 に答える