2016-01-11 3 views
1

Я запускаю следующий код, и VBA просто мигает в течение миллисекунды, и результаты не выдаются. Независимо от того, как я редактирую код, VBA не выполнит его.Мой код не исполняется

Я так смущен. Однако, если я запускаю свой исходный код, он работает ... Я пытаюсь сделать те же изменения в моем исходном коде, и VBA будет работать, но перестанет работать после нескольких попыток.

Кто-нибудь знает, что происходит?

Начало Код:

Sub LeadDetailsQR() 

    Dim OgData As String 
    OgData = ActiveSheet.Name 

    Sheets(OgData).AutoFilterMode = False 
    varMyData = Sheets(OgData).Range("AK2", Range("AK" & Rows.Count).End(xlUp)).Value 

    With CreateObject("scripting.dictionary") 

     For Each varItem In varMyData 
      If Not IsEmpty(varItem) Then .Item(varItem) = Empty 
     Next varItem 

     For Each varItem In .keys 

      Cells.AutoFilter 
      Sheets.Add Before:=ActiveSheet 

      Application.DisplayAlerts = False 
      On Error Resume Next 
      ActiveWorkbook.Worksheets(varItem).Delete 
      On Error GoTo 0 
      Application.DisplayAlerts = True 

      ActiveSheet.Name = varItem 
      Sheets(OgData).Select 
      Sheets(OgData).Range("AK1").AutoFilter Field:=37, Criteria1:=varItem 
      Sheets(OgData).Cells.CurrentRegion.Copy 
      Sheets(varItem).Cells.PasteSpecial Paste:=xlPasteColumnWidths 
      Sheets(OgData).Cells.CurrentRegion.Copy 
      Sheets(varItem).Cells.PasteSpecial Paste:=xlPasteAll 

     Next varItem 

    End With 

    Sheets(OgData).AutoFilterMode = False 

End Sub 

Orginal код (работ):

Sub LeadDetailsQROriginal() 

    Dim OgData As String 
    OgData = ActiveSheet.Name 

    Sheets(OgData).AutoFilterMode = False 
    varMyData = Sheets(OgData).Range("A2", Range("A" & Rows.Count).End(xlUp)).Value 

    With CreateObject("scripting.dictionary") 
     For Each varItem In varMyData 
      If Not IsEmpty(varItem) Then .Item(varItem) = Empty 
     Next varItem 
     For Each varItem In .keys 
      Sheets.Add Before:=ActiveSheet 
      ActiveSheet.Name = varItem 
      Sheets(OgData).Range("A1").AutoFilter Field:=1, Criteria1:=varItem 
      Sheets(OgData).Select 
      Sheets(OgData).Range("A1").CurrentRegion.Copy 
      Sheets(varItem).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths 
      Sheets(OgData).Range("A1").CurrentRegion.Copy 
      Sheets(varItem).Range("A1").PasteSpecial Paste:=xlPasteAll 
     Next varItem 
    End With 

    Sheets(OgData).AutoFilterMode = False 

End Sub 
+0

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

+4

При отправке кода, пожалуйста, уделите время на * indent * it - вы с большей вероятностью получите помощь, если ваш код легко читается. Большой блок с выравниванием по левому краю трудно сканировать. –

+0

@KenWhite Ошибка кода/ошибки, которая возвращается. Рабочий лист остается прежним. – Zeta

ответ

2

Я смущен, чтобы сказать, что я нашел ответ. Код выполняет именно то, что он делает. Он работал без ошибок, потому что диапазон, который он искал, пуст, и в результате ничего не создается.

Если я не понимаю, позвольте мне объяснить код. Код должен создать новый лист, основанный на каждом уникальном значении в столбце. Код работал без каких-либо результатов, потому что я просил код посмотреть столбец AK, который является пустым столбцом. Так что, конечно, ничего не получилось :)

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