2016-12-09 3 views
0

Мне нужно сделать небольшое приложение VBA для школьного проекта.Ошибка VBA 1004 Объект не удался для _Global

Я записал макрос, который изменяет размеры всех ячеек, а затем делает их зелеными. После этого я выбираю конкретные ячейки и перекрашиваю их в белый цвет. Таким образом, результатом должен быть логотип Excel. Однако, когда я запускаю код, для объекта _Global произошел сбой объекта Range 1004.

Код:

Sub Resize() 

Columns("A:BZ").ColumnWidth = 2.71 
Rows("1:1000").RowHeight = 15 
Cells.Select 
With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .Color = 4485149 
    .TintAndShade = 0 
    .PatternTintAndShade = 0 
End With 

Union(Range(_ 
    "O14:P15,L7:T7,S5:T6,P6:Q6,E38:F47,G46:J47,G42:J43,G38:J39,N38:O39,O40:R41,R38:S39,P42:Q43,O44:R45,N46:O47,R46:S47,W38:X47,Y46:AB47,Y38:AB39,AF38:AK39,AF40:AG47,AH46:AK47,AH42:AK43,AO38:AP47,AQ46:AT47,R6,Y7:AP9,AN10:AP31,Y29:AM31,AF10:AF28,AG24:AM24,Y24:AE24" _ 
    ), Range(_ 
    "AG19:AM19,AG14:AM14,Y14:AE14,V4:X33,U5:U32,T12:T25,S14:S23,R16:R21,Q18:Q19,Q28:T32,M26:R27,N24:Q25,O22:P23,L28:P31,H28:K30,F9:G29,H8:J27,K12:K25,L14:L23,M16:M21,N18:N19,K8:T9,M10:R11,N12:Q13" _ 
    )).Select 
Cells.Select 
With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .ThemeColor = xlThemeColorDark1 
    .TintAndShade = 0 
    .PatternTintAndShade = 0 
End With 
End Sub 
+0

Вы можете выполнить свой код по строкам в vbexplorer, нажав F8, можете ли вы попробовать это? – User632716

+0

какая строка бросает ошибку? – user3598756

+0

В какой строке происходит ошибка? Вероятно, мы не можем «отправить вам полное решение», но мы можем помочь вам достичь вашего решения. –

ответ

1

строка подается на Range должна быть меньше 256 символов, в то время как ваш первый диапазон имеет только 257 ... так что просто перенести некоторые символы на 2-й диапазон

Кроме того, вы «повторно выбрать все ячейки вместо них разыскиваемых

см код:

Option Explicit 

Sub Resize() 

    With Range("A1:BZ1000") 
     .ColumnWidth = 2.71 
     .RowHeight = 15 
     With .Interior 
      .Pattern = xlSolid 
      .PatternColorIndex = xlAutomatic 
      .Color = 4485149 
      .TintAndShade = 0 
      .PatternTintAndShade = 0 
     End With 
    End With 

    With Union(Range(_ 
     "O14:P15,L7:T7,S5:T6,P6:Q6,E38:F47,G46:J47,G42:J43,G38:J39,N38:O39,O40:R41,R38:S39,P42:Q43,O44:R45,N46:O47,R46:S47,W38:X47,Y46:AB47,Y38:AB39,AF38:AK39,AF40:AG47,AH46:AK47,AH42:AK43,AO38:AP47,AQ46:AT47,R6,Y7:AP9,AN10:AP31,Y29:AM31" _ 
     ), Range(_ 
     "AF10:AF28,AG24:AM24,Y24:AE24,AG19:AM19,AG14:AM14,Y14:AE14,V4:X33,U5:U32,T12:T25,S14:S23,R16:R21,Q18:Q19,Q28:T32,M26:R27,N24:Q25,O22:P23,L28:P31,H28:K30,F9:G29,H8:J27,K12:K25,L14:L23,M16:M21,N18:N19,K8:T9,M10:R11,N12:Q13" _ 
     )).Interior 
     .Pattern = xlSolid 
     .PatternColorIndex = xlAutomatic 
     .ThemeColor = xlThemeColorDark1 
     .TintAndShade = 0 
     .PatternTintAndShade = 0 
    End With 
End Sub 
+1

Кстати, вы могли бы ограничить «A1: BZ1000» до «A1: BZ50» и по-прежнему иметь нужный логотип «Excel» правильно – user3598756

+0

Именно в этом была проблема, спасибо! @ user3598756 Нужно это место для других вещей, но спасибо за совет;) –

+0

Добро пожаловать. Поскольку вы изучаете VBA, как вы видели здесь, вы всегда должны использовать полностью квалифицированные ссылки «Range» вместо шаблона 'Select' /' Selection'/'Activate' /' ActiveXXX', который должен быть _confined_ для veeeery несколько Особые случаи – user3598756

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