2015-11-16 5 views
-1

У меня есть следующий макрос, который должен искать через Col D, выбирать строки, содержащие мою букву 'b'.Выбор всей строки с определенными критериями, ошибка

Для того, чтобы прояснить ситуацию, например, я хочу, чтобы выбрать всю строку, в которой происходит «стек» в столбце A.

Sub SelectRowsb() 
    Dim z As Range 
    Dim rngb As Range 
    For Each z In Intersect(ActiveSheet.UsedRange, Columns("D")) 
     If z = "b" Then 
      If rngb Is Nothing Then Set rngb = z.EntireRow 
      Set rngb = Union(rngb, z.EntireRow) 
     End If 
    Next z 
    rngb.Select 
End Sub 

я получаю ошибку во время запуска «13» типа несоответствия. на if z = "b" Затем

Любые советы, чтобы обойти это, будут оценены.

EDIT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ модифицированный код до сих пор

Sub selectRowsB() 
Dim varRange As String 
Dim varRow As Long 
varRange = "" 
For varRow = 1 To ThisWorkbook.Sheets("sheet1").Range("A65000").End(xlUp).Row 
    If ThisWorkbook.Sheets("sheet1").Range("A" & varRow).Value = "stack" Then 
     If varRange = "" Then 
      varRange = ThisWorkbook.Sheets("sheet1").Range("A" & varRow).EntireRow.Address 
     Else 
      varRange = varRange & "," & ThisWorkbook.Sheets("sheet1").Range("A" & varRow).EntireRow.Address 
     End If 
    End If 
Next 
If varRange <> "" Then 
    ThisWorkbook.Sheets.Range(varRange).Select 
End If 
End Sub 

EDIT ~~~~~~~~~~~~~~~~~~~~ модифицированный код v2

Sub test() 

Dim varRange As String 
Dim varRow As Long 

varRange = "" 

For varRow = 1 To ThisWorkbook.Sheets("Sheet1").Range("A65000").End(xlUp).Row 

If ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).Value = "insert_job" Then 

    If varRange = "" Then 

     varRange = ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).EntireRow.Address 

    Else 

     varRange = varRange & "," & ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).EntireRow.Address 

    End If 

End If 

Next 

If varRange <> "" Then 

    ThisWorkbook.Sheets("Sheet1").Range(varRange).Select 

End If 
    End Sub 
+0

'z' - это диапазон ... – findwindow

+0

Итак, что я должен изменить? Извините, я получил код из Интернета, новичок в этом. – Jonathan

+0

Вздох. Вы удалили сообщение, которое я поставил сегодня утром, и сделал некоторые поисковые запросы, чтобы понять, что вы, похоже, мало понимаете:/Думаю, вы просто добавили 'If z =" b "Then' и надеялись, что это сработает? Изучите код. – findwindow

ответ

0
Sub test() 

Dim varRange As String 
Dim varRow As Long 

varRange = "" 

For varRow = 1 To ThisWorkbook.Sheets("Sheet1").Range("A65000").End(xlUp).Row 

If ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).Value = "stack" Then 

    If varRange = "" Then 

     varRange = ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).EntireRow.Address 

    Else 

     varRange = varRange & "," & ThisWorkbook.Sheets("Sheet1").Range("A" & varRow).EntireRow.Address 

    End If 

End If 

Next 

If varRange <> "" Then 

    ThisWorkbook.Sheets("Sheet1").Range(varRange).Select 

End If 

End Sub 

Извиняюсь, просто войти в систему, как это не давало мне покоя, этот код был протестирован и отлично работает на моей машине

+0

спасибо за ваш ответ. Я получаю ошибку компиляции: метод члена данных не найден. Примечание. Я ищу «b» или независимо от значения в столбце B, мой активный лист - sheet1. – Jonathan

+0

Извинения, плохое мобильное форматирование. Попробуйте сейчас – AranDG

+0

У меня такая же ошибка. очень странно. Я изменил значение из b, я просто использовал b в качестве образца. Но все равно не должно этого влиять. Что касается выше, я полностью подразумевал, что я искал «b» в col d. Сожалею. Чтобы было проще, скажите, что я ищу «стек» в столбце A. – Jonathan

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