2016-09-14 2 views
0

Я пытаюсь написать код, который возьмет лист со столом и вставьте только видимые ячейки на новый рабочий лист и заморозит строку заголовка. Я продолжаю получать 1004 метод вставки класса workseet сбойной ошибки, отладчик выделяет activesheet.paste как проблему. Я довольно новичок в VBA, поэтому не уверен, почему я получаю сообщение об ошибке вроде такой простой команды?Ошибка отображения видимых ячеек 1004

Sub Macro6() 
' 
' Macro6 Macro 
' 

' 
    Sheets("Midwest Log").Select 
    Range("A1").Select 
    Selection.SpecialCells(xlCellTypeVisible).Select 
    Selection.Copy 
    Sheets.Add After:=Sheets(Sheets.Count) 
    Sheets(Sheets.Count).Name = "MW Log" 
    Application.CutCopyMode = False 
    Sheets("MW Log").Paste 
    Columns("A:I").Select 
    Columns("A:I").EntireColumn.AutoFit 
    Rows("4:4").Select 
    ActiveWindow.FreezePanes = True 
    Range("A1").Select 
End Sub 

ответ

0

У вас там Application.CutCopyMode = False. Удалите его, и все будет в порядке.

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

something.Select 
Selection.dosomething 

с

something.dosomething 

Замораживание было немного сложнее, хотя и я не уверен, что это идеальный способ либо.

Sheets("Midwest Log").Range("A1").SpecialCells(xlCellTypeVisible).Copy 
Sheets.Add After:=Sheets(Sheets.Count) 
Sheets(Sheets.Count).Name = "MW Log" 
Sheets("MW Log").Paste 
Columns("A:I").AutoFit 
ActiveWindow.SplitRow = 3 
ActiveWindow.FreezePanes = True 
+0

Код не работает, говорит, что excel не может обрабатывать доступные ресурсы, а затем выдаёт сообщение об ошибке на строке вставки. – AngelOfDef

+0

Возможно, это ваш лист? Он содержит много данных? Если нет, вы попробовали его на новом/чистом листе? – arcadeprecinct

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