0

私がする必要があるのは、Excelマクロを使用して次のことです。

  1. シート 2 に移動 テキスト L3 から R26 の範囲をコピー
  2. 次に、シート 1 に戻り、L 列にテキスト「Recess Size」を含むセルを検索します。
  3. 次に、「凹部サイズ」を含むセルから始まるコピーした範囲を貼り付けます
  4. これを列の最後まで繰り返す必要があります。

これは、Microsoft サポート ページを使用して思いついたコードです。

Dim x As Integer
NumRows = Range("L2", Range("L600").End(xldown)).Rows.Count
Range("L2").Select
For x = 1 To NumRows
    Sheets("Sheet2").Select
    Range("A1:G24").Select
    Selection.Copy
    Sheets("Sheet1").Select
    Cells.Find(What:="Recess Size", After:=ActiveCell,  LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows,  SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Select
Next                

残念ながら、これは連続ループに入り、ESC キーを押してアクションが 1 列左に貼り付けられるまで停止しませんか? コードに正しくないものはありますか?

誰かが助けてくれることを願っています。

4

1 に答える 1

0

Activesheet と Activecell はあいまいすぎます。

マルチシート プログラムで作業している場合は、作業しているシートを指定するか、"Sheet1" の倍数に対して "With Sheets("Sheet1")" を使用することをお勧めします。

これは切り貼りではないかもしれませんが、私の意味は理解できます。

Sub Sheetspractice()
    NumRows = Sheets("Sheet1").Range("L2:L" & Rows.Count).End(xlup).Row
    Sheets("Sheet1").Range("L2").Select
    For x = 1 To NumRows
        Sheets("Sheet2").Range("A1:G24").Select
        Selection.Copy
        Sheets("Sheet1").Cells.Find(What:="Recess Size", After:=ActiveCell,  LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows,  SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
        Sheets("Sheet1").Paste
        Sheets("Sheet1").Range("A1").Offset(1, 0).Select
    Next
End Sub
于 2013-06-24T18:06:20.337 に答える