2016-03-15 6 views
1

Формат данных: от A3 до A (без конкретной последней строки) называется Менеджером имен как = PeriodPrev. = PeriodPrev - это метка, которую я использовал для маркировки данных. = Маркировка PeriodCurr начинается после последней заполненной строки для PeriodPrev. Остальные данные для PeriodPrev и PeriodCurr лежат под столбцом E до W.Очистить содержимое строк в зависимости от диапазона ячеек

Код: Как создать четкое содержимое данных в столбцах A и E в W для данных, относящихся к = PeriodPrev в столбце A? Я пробовал следующий код, но он не полностью выполняет указанную выше цель. "Если c.Value = "PeriodPrev" Тогда" возвращает ошибку 13. "Если c.Value = Range (" PeriodPrev ") Тогда" возвращаемая ошибка 1004.

Sub BYe() 
'The following code is attached to the "Clear" button which deletes Previous Period data 

    Dim c As Range 

    Dim LastRow As Long 

    Dim ws As Worksheet 


    ws = ThisWorkbook.Worksheets("Sheet1") 


    LastRow = Range("A" & Rows.count).End(xlUp).Row 

    For Each c In Range("A3:A" & LastRow) 
     If c.Value = "PeriodPrev" Then 
     ' If c.Value = Range("PeriodPrev") Then 
     c.EntireRow.ClearContents 
     End If 

    Next c 

End Sub 

ответ

0

Используйте Intersect

If Not Application.Intersect(c, Range(yourLabel)) Is Nothing Then 

Пусть я знаю, если он не работает

0

Было что-то не так с этим кодом. Я попытался устранить некоторые проблемы с комментариями

Sub BYe() 
    'The following code is attached to the "Clear" button which deletes Previous Period data 
    Dim c As Range, lastRow As Long, ws As Worksheet 

    'you need to SET a range or worksheet object 
    Set ws = ThisWorkbook.Worksheets("Sheet1") 

    'you've Set ws, might as well use it 
    With ws 
     lastRow = .Range("A" & Rows.Count).End(xlUp).Row 
     For Each c In .Range("A3:A" & lastRow) 
      'the Intersect determines if c is within PeriodPrev 
      If Not Intersect(c, .Range("PeriodPrev")) Is Nothing Then 
       'this clears columns A and E:W on the same row as c. 
       .Range(.Cells(c.Row, "A"), .Cells(c.Row, "E").Resize(1, 19)).ClearContents 
      End If 
     Next c 
    End With 
End Sub 

Следующие действия должны выполнять одно и то же действие без цикла.

Sub BYe2() 
    'The following code is attached to the "Clear" button which deletes Previous Period data 
    Dim lastRow As Long, ws As Worksheet 

    Set ws = ThisWorkbook.Worksheets("Sheet1") 

    With ws 
     lastRow = .Range("PeriodPrev").Rows(.Range("PeriodPrev").Rows.Count).Row 
     .Range("A3:A" & lastRow & ",E3:W" & lastRow).ClearContents 
    End With 
End Sub 
+0

Я получаю ошибку 1004 для этой строки: "lastRow = .Range (PeriodPrev) .Rows (.Range (PeriodPrev) .Rows.count) .Row" –

+0

Мои извинения. Должен быть указан период Period. – Jeeped

+0

Hi Jeeped, он тоже не работает. Я попробовал следующий код, но одна и та же ошибка 1004 все еще появилась на странице lastrow = ... etc. «Sub bye2() Dim lastRow As Long Dim WS Как Worksheet Dim ГСЧ As Range Set Ws = ThisWorkbook.Worksheets ("Data_LE") Set ГСЧ = ThisWorkbook.Worksheets ("Макросы"). Range («PeriodPrev») С ws lastRow = .Range («PeriodPrev»). Строки (.Range («PeriodPrev»). Rows.count) .Row .Range («A3: A» & lastRow & », E3: W "и lastRow) .ClearContents End With End Sub –

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