次のコードを使用して、リストを別のワークシートに動的にコピーしようとしています。実行されますが、コピーするのではなく、ソースワークシート上の列Eをすべて削除し、コピー先のワークシートには何も移動しません。私は何が起こっているかわからない、何か提案?forループVBA Excelの条件付きで行をコピーして貼り付ける方法
Option Explicit
Sub findCells()
Dim topCell As String
Dim leftCell As String
Dim refCell As Range
Dim sht As Worksheet
Dim lastRow As Long
Dim i As Long
Set refCell = ActiveCell
topCell = refCell.End(xlUp).Value
leftCell = refCell.End(xlToLeft).Value
MsgBox topCell
MsgBox leftCell
Worksheets(topCell).Activate
Set sht = Worksheets(topCell)
lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
MsgBox lastRow
For i = 1 To lastRow
Dim cellVal As String
Dim altCounter As Integer
altCounter = 31
Cells(i, 5).Value = cellVal
If leftCell = cellVal Then
Dim crange As Range
altCounter = altCounter + 1
Let crange = "A" & i & ":" & "G" & i
Range(crange).Copy Worksheets("Summary").Range("A" & altCounter & ":" & "G" & altCounter)
End If
Next i
End Sub
なぜループ内に変数を作成していますか?あなたのループからあなたのワークブックの冒頭にDimのを移動します。また、現在、ループ内のセル(i、5)を ""に割り当てているようです(CellValは空白なので)。 cellVal = Cells(i、5).Valueのようになります。私はまた、適切に設定されていることを確認するためにあなたのcrangeをデバッグすることをお勧めします。私は見たことがありません前にそのように使用されて見ました。私はそれがクラスモジュール内で使われているのを見ただけです。 –