0

不足しているエントリを修正しようとしています

  1. それを見つけて、それから
  2. 見つかったエントリに関連する最も左のセルの値を、別のワークシートの最初の空の一番下のセルにコピーします。
   With Worksheets("Paste Pivot").Range("A1:AZ1000")
   Dim source As Worksheet
   Dim destination As Worksheet
   Dim emptyRow As Long
   Set source = Sheets("Paste Pivot")
   Set destination = Sheets("User Status")
   Set c = .Find("MissingUserInfo", LookIn:=xlValues)
   If Not c Is Nothing Then
    firstAddress = c.Address
    Do
                   'Here would go the code to locate most left cell and copy it into the first empty bottom cell of another worksheet  
       emptyRow = destination.Cells(destination.Columns.Count, 1).End(xlToLeft).Row
       If emptyRow > 1 Then
       emptyRow = emptyRow + 1
       End If
       c.End(xlToLeft).Copy destination.Cells(emptyRow, 1)
        c.Value = "Copy User to User Status worksheet"

        Set c = .FindNext(c)
        If c Is Nothing Then Exit Do
    Loop While c.Address <> firstAddress
End If
End With  
4

2 に答える 2

0

CurrentRegionここで役立つと思います。

たとえば、範囲 A1:E4 のすべてのセルに値がある場合、

Cells(1,1).CurrentRegion.Rows.Countは 4 に等しく、

Cells(1,1).CurrentRegion.Columns.Count5に等しい

したがって、次のように書くことができます。

c.End(xlToLeft).Copy _
    destination.Cells(destination.Cells(1).CurrentRegion.Rows.Count + 1, 1)

コピー先のスプレッドシートの途中に隙間がなければ、ユーザー ID が "MissingUserInfo" のある行の先頭 ("Paste Pivot" シート内) から新しい行の最初のセルにコピーされます。 「ユーザーステータス」シートの最後に。

Do ループは次のようになります。

Do
    c.End(xlToLeft).Copy _
        destination.Cells(destination.Cells(1).CurrentRegion.Rows.Count + 1, 1)
    c.Value = "Copy User to User Status worksheet"
    Set c = .FindNext(c)
    If c Is Nothing Then Exit Do
Loop While c.Address <> firstAddress
于 2013-05-01T17:36:00.693 に答える