Ошибка 13: Тип ограничения строки несоответствия?

Когда необработанные данные листа Excel имеют менее 10 000 строк, они запускаются, когда у них 10 000 строк и более, я получаю сообщение об ошибке. Есть идеи? Ошибка указывает на mu = Cells(joker, 12)

Columns("A:I").Select
Selection.ClearContents
Windows("New Registrations.xls").Activate
ActiveWindow.WindowState = xlNormal
Columns("A:I").Select
Selection.Copy
Windows("Polk Trend Report CYTD.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 0

Sheets("Data").Select

Dim nz As Long
Dim joker As Long
Dim lambda As Long

nz = Cells(4, 12).Value

Dim mu As Long
    For joker = 5 To nz + 4
    lambda = Cells(joker, 11)
    mu = Cells(joker, 12)
        If lambda <> 0 And mu - lambda > 1 Then
            Range("A" & lambda).Select
            Selection.Copy
            Range("A" & lambda + 1 & ":A" & mu - 1).Select
            ActiveSheet.Paste
            Else:
        End If
Next joker

Range("N5:O" & nz + 4).Select
Selection.ClearContents

Dim iota As Long
Dim kappa As Long
iota = 7
Do While Cells(iota, 2).Value <> ""
    If Cells(iota, 2) = "UNKNOWN" Then
        kappa = Application.WorksheetFunction.Match(Cells(iota, 1).Value, Range("J1:J" & nz + 4), 0)
        Cells(kappa, 14).Value = Cells(iota, 7).Value
        Cells(kappa, 15).Value = Cells(iota, 5).Value
        Range("A" & iota & ":I" & iota).Select
        Selection.Delete Shift:=xlUp
        iota = iota - 1
    ElseIf Cells(iota, 2) = "Zone Total" Then
        Range("A" & iota & ":I" & iota).Select
        Selection.Delete Shift:=xlUp
        iota = iota - 1
    ElseIf Application.WorksheetFunction.And(Cells(iota, 5) = 0, Cells(iota, 7) = 0) Then
        Range("A" & iota & ":I" & iota).Select
        Selection.Delete Shift:=xlUp
        iota = iota - 1
    Else:
    End If
iota = iota + 1
Loop

Range("A" & iota & ":I" & iota).Select
Selection.Delete Shift:=xlUp

Range("C5:I5").Select
Selection.Copy
Range("C6").Select
ActiveSheet.Paste

Set pvtTable = Worksheets("Total Dealer (Trend)").Range("O5").PivotTable
pvtTable.RefreshTable
Sheets("Total Dealer (Trend)").Select
Cells.Select
Selection.Columns.AutoFit

Sheets("Data").Select
Range("S40:T" & nz + 39).Select
Selection.Copy
Range("A2").Select
Sheets("Total Dealer (Trend)").Select
Range("B40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False

Sheets("Data").Select
Range("U40:U" & nz + 39).Select
Selection.Copy
Range("A2").Select
Sheets("Total Dealer (Trend)").Select
Range("E40").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
Range("B40:E" & nz + 39).Select
Selection.Sort Key1:=Range("E40"), Order1:=xlDescending, Header:=xlNo _
    , OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
Range("A1").Select
ActiveWindow.WindowState = xlMaximized

End Sub

person Shawn Ryan    schedule 10.12.2014    source источник
comment
Я посмотрю, но проверьте эту ссылку на Избегайте Использование операторов выбора   -  person peege    schedule 11.12.2014
comment
Чего вы пытаетесь достичь, или я должен спросить, что это эффективно ДЕЛАЕТ для 10 000 строк, прежде чем оно остановится?   -  person peege    schedule 11.12.2014
comment
Макрос захватывает необработанные данные с другого рабочего листа и форматирует данные в отдельные вкладки на основе определенных критериев в данных. Данные складываются в течение года, так что это первый раз, когда он остановился. Я поиграл и обнаружил, что если я удалю всего несколько строк, чтобы получить менее 10 тысяч строк, это работает, 10 тысяч или более я получаю сообщение об ошибке и понятия не имею, почему. спасибо за любое понимание   -  person Shawn Ryan    schedule 11.12.2014
comment
Нет ничего уникального после строки 10 КБ на листе Excel, что на поверхности я вижу как изменение формата. Есть ли способ установить mu равным большему количеству ячеек, чем 10 КБ?   -  person Shawn Ryan    schedule 11.12.2014
comment
есть ли шанс получить копию листа?   -  person peege    schedule 11.12.2014
comment
Вы знакомы с окном Locals, Шон? он сообщит вам значения всех переменных в любой точке останова.   -  person peege    schedule 11.12.2014
comment
есть ли способ загрузить листы?   -  person Shawn Ryan    schedule 11.12.2014
comment
Я запустил окно Locals и отладил - я получил следующее: nz 30 long; джокер 5 длинный; лямбда 7 длинная; мю 0 длинный; йота 0 длинная; каппа 0 длинная; pvtTable пустой вариант/пустой   -  person Shawn Ryan    schedule 11.12.2014
comment
Если это так, то когда возникает ошибка, это не приближается к 10 000.   -  person peege    schedule 11.12.2014
comment
Если вы использовали сайт обмена файлами и разместили ссылку в своем посте. Я мог скачать его и посмотреть, что там.   -  person peege    schedule 11.12.2014
comment
Прошлой ночью я заметил, что в Cell k4 было заполнено число 10000... Я изменил это число на 20000, и оно заработало... спасибо всем, кто заглянул в это... я очень ценю это   -  person Shawn Ryan    schedule 11.12.2014
comment
Шон, не стесняйтесь публиковать ответ и принимать его, чтобы никто другой не был вовлечен в работу над ним и/или не должен был прочитать все комментарии, чтобы знать это.   -  person peege    schedule 11.12.2014


Ответы (2)


Я думаю, что у вас может произойти изменение формата на вашем листе после строки 10 000. Скажем, это была дата, теперь это общий или какой-либо другой конфликт типа, и вы получаете несоответствие данных в результате того, что значение mu установлено с помощью «L10000».

Проверьте формат ячеек ниже 10 000. Особенно колонка "L"

person peege    schedule 10.12.2014

это пример обработчика ошибок, надеюсь, вы можете просто скопировать и вставить его в свой код, как описано, и он должен выводить значение сбойной ячейки при возникновении ошибки, а затем вы, надеюсь, сможете ее исправить. Следующее идет прямо в верхней части вашего кода

On Error GoTo MyProcedure_Error

Затем ниже идет над концевой подпрограммой

MyProcedure_Exit:
      On Error GoTo 0
      Exit Sub

MyProcedure_Error:
       Select Case Err.Number
              'the "Case 9" statement below is left as an example to show how you could code a
              'specific error message if a specifc module needed it
              'Case 9
                  'MsgBox "The input file does not appear to be in the correct format, for importing into the " & _
                  '" Locations tab" & vbCrLf & "The expected format is " & Str(Import_Cols) & " columns, Pipe Delimited" & _
                  'vbCrLf, vbCritical, "Error in in procedure TrimColumn of Module DeveloperToolKit"
              Case Else
               MsgBox "An unexpected error has occured, the call value that has failed is." & _
                  vbCrLf & Cells(joker, 12) & _
                  vbCrLf & "Error Code = " & Str$(Err.Number) & _
                  vbCrLf & "Error Text = " & Err.Description, vbCritical, "Critical Error"
       End Select
       Resume MyProcedure_Exit
person Mark Moore    schedule 11.12.2014
comment
Тип Несоответствие строки кода: mu = Cells(joker, 12) - person Shawn Ryan; 11.12.2014
comment
Хорошо, теперь я понимаю, почему в предыдущих комментариях упоминаются конфликты типов. Пробовали ли вы добавить ошибку и распечатать Cells(joker, 12) в своем блоке ошибок? Либо через debug.print, либо через msgbox Cells(joker, 12) - person Mark Moore; 11.12.2014
comment
извините, это значит добавить обработчик ошибок - person Mark Moore; 11.12.2014
comment
Марк, спасибо за ваши ответы, я бы тоже понятия не имел, как это сделать - person Shawn Ryan; 11.12.2014
comment
PS, простите мою орфографию, здесь очень поздно (или рано). А теперь спать, удачи, завтра проверю :) - person Mark Moore; 11.12.2014
comment
Извините, последний комментарий, вы можете изменить сообщение об ошибке, чтобы вывести любую полезную информацию, такую ​​​​как значение джокера, определить строку, которая не работает, и т. д. - person Mark Moore; 11.12.2014
comment
Спасибо, Марк .. Я добавил код, и он сказал: Компилировать дубликат объявления ошибки в текущей области. Когда я нажимаю OK, я попадаю в Dim Joker As Long. - person Shawn Ryan; 11.12.2014
comment
Привет, Шон, извини, я, кажется, отправляю тебя сюда задом наперед. Однако хорошей практикой, которая поможет в этом, является добавление опции explict в начало кода для принудительного применения объявлений, а затем размещение всех ваших объявлений в самом начале кода, что должно упростить обнаружение вашего дублирующего объявления. - person Mark Moore; 12.12.2014