2016-01-12 3 views
1

Я пытаюсь сделать макрос, который перемещает ячейки из выбора вправо (на 5 пяти ячеек). Он отлично работает, пока я не разделяю книгу, есть ли какое-нибудь проворное решение?1004 недоступно в общей книге

Sub dodaj_akcje() 
' 
' dodaj_akcje Macro 
' 

' 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 

Range("C1:F1").Select 
Selection.Copy 
ActiveSheet.Range("c1").End(xlDown).Offset(1, 0).Select 
ActiveSheet.Paste 

Columns("I:M").Select 
With Selection.Validation 
    .Delete 
    .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ 
    :=xlBetween 
    .IgnoreBlank = True 
    .InCellDropdown = True 
    .InputTitle = "" 
    .ErrorTitle = "" 
    .InputMessage = "" 
    .ErrorMessage = "" 
    .ShowInput = True 
    .ShowError = True 
End With 
End Sub 
+0

Ну, вы прокомментируете ответ на свой вопрос. Если это невозможно в общей книге, это невозможно в общей книге. Не вручную, а не VBA. Не можете ли вы отделить книгу от макроса, запустить код, а затем поделиться им еще раз? – vacip

ответ

0

Слепой выстрел, но я предполагаю, что есть некоторые требования, чтобы держать листы «транзакционными». В начале вашего макроса попробуйте: Sheets("Sheet1").Protect и в конце Sheets("Sheet1").Unprotect.

+0

Боюсь, это не поможет. Если что-то недоступно, когда рабочая книга является общей, она по-прежнему не выполняется через макрос. Мне нужно обходное решение, чтобы выбрать 30 ячеек в одной строке (считая справа от выбранного) и переместить их по 5 ячеек вправо. –

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