ошибка времени выполнения 1004 сбой диапазона методов глобального объекта

#vba

#vba

Вопрос:

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

 Range(copyRngStart amp; copyRngEnd).Copy Destination:=Worksheets("Display").Range("A" amp; lr2   1)
 

ошибка времени выполнения 1004 сбой диапазона методов глобального объекта

может кто-нибудь, пожалуйста, посмотрите, чтобы исправить это, спасибо.

 Sub Distinct()

    Dim lr2 As Long
    Dim searchRng As Range, copyRngStart As Range, copyRngEnd As Range

    Set searchRng = Worksheets("Information").Range("A1")
    lr2 = Sheets("Display").Cells(Rows.Count, "A").End(xlUp).Row

    ' Enter/continue loop while A-column is non-empty
    Do While searchRng.Value <> ""

        ' When we encounter the string TRNS in column A and Triumph Foods LLC in column E
        If searchRng.Value = "TRNS" And searchRng.Offset(0, 4).Value = "Triumph Foods LLC" Then

            ' Set the start of the copy area
            Set copyRngStart = searchRng
        End If

        ' When we encounter the string ENDTRNS
        If searchRng.Value = "ENDTRNS" Then
            ' .. set the end of the copy area
            Set copyRngEnd = searchRng.Offset(-1, 5)

            ' Copy and paste
            Range(copyRngStart amp; copyRngEnd).Copy Destination:=Worksheets("Display").Range("A" amp; lr2   1)
            lr2 = Sheets("Display").Cells(Rows.Count, "A").End(xlUp).Row
        End If

        ' Increment search loop
        Set searchRng = searchRng.Offset(1, 0)
    Loop
End Sub
 

Комментарии:

1. Измените значение amp; на ,

2. Только первый amp; оставляет второй.

3. Я внес эти изменения и все еще получаю ту же ошибку

4. Как сказал @ScottCraner. Ваша проблема заключается в том, где вы указываете диапазон для копирования : Range(copyRngStart amp; copyRngEnd) . Если начало равно A1, а конец равен B2, вы говорите A1B2 … это только одно значение, поэтому оно должно быть адресом ячейки. Можете ли вы найти ячейку A1B2? Excel тоже не может. Однако A1,B2 это два значения, разделенные запятой. Это должен быть диапазон. Excel может найти этот диапазон.

5. Спасибо за объяснение, поэтому я добавил этот диапазон изменений («A: A1200» amp; copyRngStart amp; «E: E1200» amp; copyRngEnd). Пункт назначения копирования:= Рабочие листы («Отображение»). Диапазон («A» amp; lr2 1) исправит ли это? пожалуйста, дайте мне знать.

Ответ №1:

 Sub Distinct()

    Const TRNS_START As String = "TRNS"
    Const TRNS_END As String = "ENDTRNS"
    Const COMPANY As String = "Triumph Foods LLC"

    Dim searchRng As Range, copyRngStart As Range, copyRngEnd As Range

    Set searchRng = Worksheets("Information").Range("A1")

    ' Enter/continue loop while A-column is non-empty
    Do While searchRng.Value <> ""

        ' When we encounter the string TRNS in column A and Triumph Foods LLC in column E
        If searchRng.Value = TRNS_START And _
           searchRng.Offset(0, 4).Value = COMPANY Then

            Set copyRngStart = searchRng ' Set the start of the copy area
        End If

        ' When we encounter the string ENDTRNS
        '    (*and had a start cell already*)
        If searchRng.Value = TRNS_END And Not copyRngStart Is Nothing Then

            Set copyRngEnd = searchRng.Offset(-1, 5)

            copyRngEnd.Worksheet.Range(copyRngStart, copyRngEnd).Copy _
              Destination:=Sheets("Display").Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)

            Set copyRngStart = Nothing 'clear the "start" range

        End If


        Set searchRng = searchRng.Offset(1, 0)
    Loop
End Sub