0

COLUMN H2にデータがあります。. 同じスプレッドシートの別の場所にコピーしたい。しかし、私がコピーした場所では、マクロによって下の各列が埋められると、一度に 1 つの COLUMN が変更されます。

私の既存のマクロは、このデータの列を正常に検索し、B31 などの下の空の列に貼り付けます。10 個の新しいデータがある場合、次にマクロを実行するときに、それを C31 の C 列 (次の空の行) に貼り付けたいと思います。次回は、D31 など。私のマクロは H2:H11 のデータを繰り返し取得して B31 に貼り付けますが、マクロを再度実行するたびにその列を上書きします。前にマクロを実行して、列 B に既にデータが配置されているのを「見ている」わけではありません。コードの何が問題なのですか?

Range("H2:H11").Select Selection.Copy
Range("A31").Select
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
ActiveCell.Rows("1:10").EntireRow.Select
Application.CutCopyMode = False
4

1 に答える 1

1
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select    

する必要があります

Range("M31").End(xlToLeft).Offset(0, 1).Select

代替ソリューションは以下のとおりです (MS PC を使用していないため、テストしていません。申し訳ありません)。

dim lRow as Long  'Output Row
lRow = 31         'Start at row 31

    For i = 2 to 13 'Column B to Column M

         'Count if there is any values in the columns 
         '(if there is a header then change the 0 to 1)

        If Application.WorksheetFunction.CountA(ActiveSheet.Columns(i)) = 0 Then

            For Each c in Range("H2:H11")  'Cycle through output values

            ActiveSheet.Cells(lRow, i).value = c.Value  'Assign values

            lRow = lRow + 1   'Increment row number

            next c

        exit for   'exit column loop

        end if

    next i
于 2012-05-04T17:41:06.983 に答える