2017-02-14 4 views
0

Приведенный ниже код работал по назначению: копирование некоторых строк из одного листа в другой. Но, когда я добавил детали с rangeToDelete, который предназначен для очистки пространства, в которое я копирую, перед каждым новым запуском кода. Я не уверен, что происходит, но когда я использую MsgBox для проверки некоторых частей кода, похоже, что это цикл, который не работает. Но, не поднимая ошибки, я не знаю, почему.Код VBA работает, но не имеет эффекта

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 
    Dim cellVal As String 
    Dim altCounter As Long 
    Dim crange As Range 
    Dim rangeToDelete As Range 

    Set rangeToDelete = Worksheets("Summary").Cells(31, "A").CurrentRegion 
    rangeToDelete.Value = "" 

    Set refCell = ActiveCell 
    topCell = refCell.End(xlUp).Value 
    leftCell = refCell.End(xlToLeft).Value 

    Set sht = Worksheets(topCell) 
    lastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 
    With sht 
    .Range("A1:G1").Copy Worksheets("Summary").Range("A31:G31") 
    altCounter = 31 
    For i = 1 To lastRow 
     cellVal = Cells(i, 5).Value 
     If leftCell = cellVal Then 
     altCounter = altCounter + 1 
     Set crange = .Range("A" & i & ":" & "G" & i) 
     crange.Copy Worksheets("Summary").Range("A" & altCounter & ":" & "G" & altCounter) 
     End If 
    Next i 
    End With 

End Sub 
+0

Каково значение последнего для входа в цикл? –

+5

Не используйте .Value = "", а скорее .ClearContents. Вы заполняете эти ячейки пустой строкой, не очищая их. – jkpieterse

+0

Или просто так: 'rangeToDelete.Clear' – Vityata

ответ

0

range.cells используемые номера не используют текст 1 для столбца A в вашем коде. а также использовать для очистки метода содержимого, как было предложено.

+1

'.Cells' действительно принимает алфавитные ссылки столбцов, а также численные значения' .Cells (1, 1) 'и' .Cells (1, «A») 'являются правильными. – Jordan

Смежные вопросы