#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