Добрый день!
Записал макрос. На некоторых файлах все выполняется отлично а на некоторых выдает ошибку:
Т.е. после запуска, просто зависает программ, нажимаешь закрыть, и Windows дает - перезапуск Excel ну и после выводится ошибка VBA.
Подскажите пожалуйста кто с этим сталкивался, как можно исправить?
Еще проблема в том, что ошибка рандомная - то есть, то нет!
не знаю даже куда копать(((
Записал макрос. На некоторых файлах все выполняется отлично а на некоторых выдает ошибку:
Цитата |
---|
Run-time error -2147417848 (80010108) Method "Add" of object "ListObject" failed |
Подскажите пожалуйста кто с этим сталкивался, как можно исправить?
Код |
---|
Sub Макрос12() ' Макрос12 Макрос Sheets("Словарь").Select ' удаление строк Dim ra As Range, delra As Range Application.ScreenUpdating = False ' отключаем обновление экрана ' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений, и использовать подстановочные знаки) УдалятьСтрокиСТекстом = Array("на", "для", "идти", "если", "при", "это", "до", "о", "из", "надо", "за", "в", "с", "как", "какой", "к", "что", "по", "где") ' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' перебираем все фразы в массиве For Each word In УдалятьСтрокиСТекстом ' если в очередной строке листа найден искомый текст If Not ra.Find(word, , xlValues, xlWhole) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next word Next ' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) ' скрываем их If Not delra Is Nothing Then delra.EntireRow.Hidden = True If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их ' удаление строк конец ' применение форматирование Columns("A:A").Select Selection.FormatConditions.AddColorScale ColorScaleType:=3 Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _ xlConditionValueLowestValue With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor .Color = 8109667 .TintAndShade = 0 End With Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _ xlConditionValuePercentile Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50 With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor .Color = 8711167 .TintAndShade = 0 End With Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _ xlConditionValueHighestValue With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor .Color = 7039480 .TintAndShade = 0 End With Columns("A:A").Select Selection.FormatConditions.AddDatabar Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1) .MinPoint.Modify newtype:=xlConditionValueAutomaticMin .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax End With With Selection.FormatConditions(1).BarColor .Color = 15698432 .TintAndShade = 0 End With Selection.FormatConditions(1).BarFillType = xlDataBarFillSolid Selection.FormatConditions(1).Direction = xlContext Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic With Selection.FormatConditions(1).AxisColor .Color = 0 .TintAndShade = 0 End With With Selection.FormatConditions(1).NegativeBarFormat.Color .Color = 255 .TintAndShade = 0 End With ' применение форматирование конец ' добавление графика Range("A1:B1").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlBarOfPie ActiveChart.SetSourceData Source:=Range("Словарь!$A$1:$B$1") ActiveChart.SeriesCollection(1).Values = "=Словарь!$A$2:$A$20" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "=Словарь!$B$1" ActiveChart.SeriesCollection(2).Values = "=Словарь!$B$2:$B$20" ActiveChart.SeriesCollection(2).XValues = "=Словарь!$B$2:$B$20" ActiveChart.ChartTitle.Select ActiveChart.ApplyLayout (6) ActiveChart.ChartTitle.Text = "ТОП20 униграмм в семантическом ядре" Selection.Format.TextFrame2.TextRange.Characters.Text = "ТОП20 униграмм в семантическом ядре" With Selection.Format.TextFrame2.TextRange.Characters(1, 14).ParagraphFormat .TextDirection = msoTextDirectionLeftToRight .Alignment = msoAlignCenter End With With Selection.Format.TextFrame2.TextRange.Characters(1, 14).Font .BaselineOffset = 0 .Bold = msoTrue .NameComplexScript = "+mn-cs" .NameFarEast = "+mn-ea" .Fill.Visible = msoTrue .Fill.ForeColor.RGB = RGB(0, 0, 0) .Fill.Transparency = 0 .Fill.Solid .Size = 18 .Italic = msoFalse .Kerning = 12 .Name = "+mn-lt" .UnderlineStyle = msoNoUnderline .Strike = msoNoStrike End With ActiveChart.ChartArea.Select ActiveSheet.Shapes("Диаграмма 1").ScaleWidth 1.48125, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("Диаграмма 1").ScaleHeight 1.4010414844, msoFalse, _ msoScaleFromBottomRight ActiveSheet.Shapes("Диаграмма 1").ScaleHeight 1.1449815616, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("Диаграмма 1").ScaleWidth 1.0928271519, msoFalse, _ msoScaleFromTopLeft ActiveChart.ChartGroups(1).SeriesLines.Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(19).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(18).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(17).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(16).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(15).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(14).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(13).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(12).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(11).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(10).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(9).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(8).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(7).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(6).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(5).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(4).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(3).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(2).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Points(1).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(1).Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(2).Points(20).DataLabel.Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(2).Points(19).DataLabel.Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.SeriesCollection(2).Points(18).DataLabel.Select ActiveSheet.ChartObjects("Диаграмма 1").Activate ActiveChart.ChartArea.Select ActiveSheet.Shapes("Диаграмма 1").IncrementLeft -96.75 ActiveSheet.Shapes("Диаграмма 1").IncrementTop 9 ActiveWindow.SmallScroll Down:=-80 ActiveChart.ClearToMatchStyle ActiveChart.ChartStyle = 10 ActiveChart.ClearToMatchStyle ' добавление графика конец ' форматирование таблицы Columns("A:C").Select ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A:$C"), , xlYes).Name = _ "Таблица5" Range("Таблица5[[#Headers],[Униграмма]]").Select Range("Таблица5[[#Headers],[Униграмма]]").AddComment Range("Таблица5[[#Headers],[Униграмма]]").Comment.Visible = True Range("Таблица5[[#Headers],[Униграмма]]").Comment.Text Text:= _ "Униграмма (лемма) - это исходная форма слова. " 'Selection.ShapeRange.IncrementLeft -62.25 'Selection.ShapeRange.IncrementTop 58.5 ' форматирование таблицы End Sub |
Еще проблема в том, что ошибка рандомная - то есть, то нет!
не знаю даже куда копать(((